创建UdpSession
定义
命名空间:TouchSocket.Sockets
程序集:TouchSocket.dll
一、说明
UDP组件是基于UDP协议的最基础组件,其功能简单,易用。它既能充当服务器,又能够作为客户端。
二、产品特点
- 简单易用。
- 多线程重叠IO。
- 内存池
- 高性能
- 支持组播、广播
- 支持插件扩展
- 支持跨平台
三、产品应用场景
- UDP基础使用场景:可跨平台、跨语言使用。
四、支持插件接口
插件方法 | 功能 |
---|---|
IUdpReceivedPlugin | 在收到数据时触发 |
五、使用UdpSession
5.1 作为服务器使用
var udpService = new UdpSession();
udpService.Received = (c,e) =>
{
Console.WriteLine(e.ByteBlock.ToString());
return EasyTask.CompletedTask;
};
udpService.Setup(new TouchSocketConfig()
.SetBindIPHost(new IPHost(7789)));
udpService.Start();
Console.WriteLine("等待接收");
5.2 作为客户端使用
var udpClient = new UdpSession();
udpClient.Setup(new TouchSocketConfig()
//.UseUdpReceive()//作为客户端时,如果需要接收数据,那么需要绑定端口。要么使用SetBindIPHost指定端口,要么调用UseUdpReceive绑定随机端口。
.SetBindIPHost(new IPHost(7788)));
udpClient.Start();
注意
- 即使不监听地址,Setup和Start都是必须要的。
- 当udp作为客户端时,Config如果不设置SetBindIPHost,将不会接收,如果不知道绑定那个端口,可以直接绑定0端口(或者使用UseUdpReceive),这样,就会使用系统空闲的一个端口了。
六、发送数据
框架内置很多发送发送。但是大致可分为两种。一种是带参数EndPoint
,和一种不带的。
6.1 发送到指定地址
带EndPoint
,即表示可以发送到任意终结点。
public virtual void Send(EndPoint remoteEP, byte[] buffer, int offset, int length)