UDP 传输 - Snet Docs

🔌 UDP 传输

命名空间: Snet.Core.communication.net.udp | 类: UdpClientOperate, UdpServiceOperate, UdpMulticastOperate, UdpBroadcastOperate

UdpClientOperate — UDP 单播客户端

继承: CommunicationAbstract<UdpClientOperate, UdpClientData.Basics>

配置 类型 默认值 说明
IpAddress string "127.0.0.1" 远程 IP
Port int 6688 远程端口
LocalPort int 0 本地绑定端口 (0=自动)
InterruptReconnection bool true 自动重连

基于 UdpClient,支持 UdpClient.Connect() 建立关联。断线重连相同指数退避机制。

using Snet.Core.communication.net.udp.unicast.client;
var udp = await UdpClientOperate.InstanceAsync(new Basics { IpAddress = "192.168.1.100", Port = 6688 });
await udp.OnAsync();
await udp.SendAsync(data);
await udp.OffAsync();

UdpServiceOperate — UDP 单播服务端

继承: CommunicationServiceAbstract<UdpServiceOperate, UdpServiceData.Basics>

单一 ReceiveLoopAsync 自动发现客户端端点,ConcurrentDictionary<IPEndPoint> 管理已知客户端。

using Snet.Core.communication.net.udp.unicast.service;
var server = await UdpServiceOperate.InstanceAsync(new Basics { Port = 6688 });
await server.OnAsync();
await server.SendAsync(data);                          // 群发
await server.SendAsync(data, "192.168.1.10:5000");     // 单播
await server.OffAsync();

UdpMulticastOperate — UDP 组播

继承: CommunicationAbstract<UdpMulticastOperate, UdpMulticastData.Basics>

配置 类型 默认值 说明
Port int 6688 本地绑定端口
MulticastAddress string "239.0.0.1" 组播组地址
MulticastPort int 8866 目标端口 (0=使用Port)
TimeToLive short 1 TTL (0=本机,1=子网)

JoinMulticastGroup/DropMulticastGroupReuseAddress,全接口绑定 IPAddress.Any

using Snet.Core.communication.net.udp.multicast;
var mc = await UdpMulticastOperate.InstanceAsync(new Basics {
    Port = 6688, MulticastAddress = "239.0.0.1", TimeToLive = 1
});
await mc.OnAsync();
await mc.SendAsync(data);
await mc.OffAsync();

UdpBroadcastOperate — UDP 广播

继承: CommunicationAbstract<UdpBroadcastOperate, UdpBroadcastData.Basics>

配置 类型 默认值 说明
Port int 6688 本地绑定端口
BroadcastAddress string "255.255.255.255" 广播地址
BroadcastPort int 8866 目标端口 (0=使用Port)

EnableBroadcast = trueReuseAddressIPAddress.Any 绑定。

using Snet.Core.communication.net.udp.broadcast;
var bc = await UdpBroadcastOperate.InstanceAsync(new Basics {
    Port = 6688, BroadcastAddress = "255.255.255.255"
});
await bc.OnAsync();
await bc.SendAsync(data);
await bc.OffAsync();

参见