在本篇,我将重点介绍DSAPI.DLL中Socket编程的使用。众所周知,Socket用起来不难,但是写起来麻烦。我对Socket进行了封装,进行了高度简化。下面我将通过代码编写一个服务端和一个客户端,注意看,不要惊讶为什么代码这么少,因为一切需要的我都集成在里面了,只需要这几句代码即可。
编写一个Socket服务端
Private WithEvents 服务端 As New DSAPI.网络相关.Socket传输.服务端_多用户
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With 服务端
.端口 = 2000
.开始监听()
End With
End Sub
至此,已经完成了Socket服务端的建立,上面演示的是允许多用户连接的服务端,同时也有DSAPI.网络相关.Socket传输.服务端_单用户,只允许一个用户连接的。
你可以通过服务端的几个事件来完成你需要的几乎所有的功能,服务端事件如下:
服务端_服务状态更改(e As DSAPI.网络相关.Socket传输.服务端_多用户.服务状态)
服务端_接收到数据(e() As Byte, IP As String, Sck As Net.Sockets.Socket)
服务端_收到客户端连接(客户端IP As String, Socket As Net.Sockets.Socket)
服务端_有客户端断开(客户端IP As String)
收到客户端数据时,向该客户端发送消息
Private Sub 服务端_接收到数据(e() As Byte, IP As String, Sck As Net.Sockets.Socket) Handles 服务端.接收到数据
服务端.向指定客户端发送文本(Sck, "你好啊", System.Text.Encoding.Default)
End Sub
这是简化的发送文本,参数中有Sck是原生的Socket客户端对象,所以这并不影响你直接使用这个对象并向其发送Bytes().编写一个Socket客户端
Private WithEvents 客户端 As New DSAPI.网络相关.Socket传输.客户端
至此,你已经完成了Socket客户端的建立,是不是超简单?是的,现在使用客户端的事件和方法,当服务端向该客户端发送消息后,触发“收到消息”事件。
Private Sub 客户端_收到消息(Bts() As Byte) Handles 客户端.收到消息
Console.WriteLine(Bts)
客户端.发送消息(System.Text.Encoding.Default.GetBytes("谢谢你,我已经收到消息"))
End Sub
客户端有3个事件可用:
出错
收到消息
断开连接
好了,你已经学会了如何使用DSAPI里的Socket服务端和客户端来进行通信,关于DSAPI.网络相关部分,至此已经结束,若有其他补充内容,以后我会补上。