在日常碰到的项目中,有些场景下不适合使用tcp常连接,而需要靠UDP无连接的数据收发。那么如何使用SharpSocket完成UDP收发数据呢?其中要掌握的关键点是什么呢?

服务端的实现

设置授权

第一步:在引用了SharpSocket.dll之后,调用SharpSocket方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。

1
KeyMgr.SetKey("Test", "Test");

获取IUdp的示例

从之前的一篇博文中,我们介绍了一张图看懂SharpSocket,从那篇文章我们可以看出,SharpSocket通过IUdp来实现udp协议。udp不区分服务端和客户端,因此都使用该接口。那么如何获取该接口的示例,从而使用该接口提供的各个方法呢?请看下面的代码:

1
2
3
4
5
//创建一个接口实例,然后就可以操作它了
udpServerInstance = SocketFactory.GetUdp();

//设置本端使用的端口号
udpServerInstance.Port = int.Parse(this.edtPort.Text);

绑定事件

绑定收到数据的事件MessageReceived。引擎会将数据上交给该事件的响应函数上,您就可以进行下一步的分析。

1
2
//订阅本接口的收到数据的事件通知,当收到数据后,自动回调您注册的方法
udpServerInstance.MessageReceived += new SGDelegate<IPEndPoint, byte[]>(MessageReceived);

启动

处理完上述步骤后,服务就正式启动了。如下:

1
udpServerInstance.Initialize();

客户端的实现

设置授权

第一步:在引用了SharpSocket.dll之后,调用SharpSocket方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。

1
KeyMgr.SetKey("Test", "Test");

获取IUdp示例

第二步:获取IUdp的示例。代码如下:

1
2
//初始化并启动客户端引擎(UDP)
udpClientInstance = SocketFactory.GetUdp();

绑定事件

绑定收到数据的事件MessageReceived。引擎会将数据上交给该事件的响应函数上,您就可以进行下一步的分析。

1
2
//订阅本接口的收到数据的事件通知,当收到数据后,自动回调您注册的方法
udpServerInstance.MessageReceived += new SGDelegate<IPEndPoint, byte[]>(MessageReceived);

发送数据到服务端

您可以随时发送数据到服务端,如下:

1
2
3
4
5
//得到服务端终结点
serverEndPoint = new IPEndPoint(IPAddress.Parse(this.edtIP.Text), int.Parse(this.edtPort.Text));

//发送消息, reqMessage是待发送的字节数组
udpClientInstance.SendData(serverEndPoint, reqMessage);

demo源码下载:

点击下载源码