组播、广播
定义
命名空间:TouchSocket.Sockets
程序集:TouchSocket.dll
一、说明
- 广播BroadCast:主机之间“一对所有”的通讯模式,广播者可以向网络中所有主机发送信息。广播禁止在Internet宽带网上传输(广播风暴)。
- 多播MultiCast:主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据。
二、组播使用
组播使用非常简单,
- 配置中启用广播UseBroadcast重要
- 在UdpSession启动后。调用JoinMulticastGroup即可加入组播。调用DropMulticastGroup,退出组播。
2.1 创建组播服务器
//创建udpService
UdpSession udpService = new UdpSession();
udpService.Received = (remote, e) =>
{
Console.WriteLine(e.ByteBlock.ToString());
return EasyTask.CompletedTask;
};
udpService.Setup(new TouchSocketConfig()
.SetBindIPHost(new IPHost(7789))
.UseBroadcast()
.SetUdpDataHandlingAdapter(() => new NormalUdpDataHandlingAdapter()));
udpService.Start();
//加入组播组
udpService.JoinMulticastGroup(IPAddress.Parse("224.5.6.7"));
2.2 发送组播数据
UdpSession udpClient = new UdpSession();
udpClient.Setup(new TouchSocketConfig()
.SetBindIPHost(new IPHost(7788))
.SetUdpDataHandlingAdapter(() => new NormalUdpDataHandlingAdapter()));
udpClient.Start();
udpClient.SendAsync(new IPEndPoint(IPAddress.Parse("224.5.6.7"), 7789), Encoding.UTF8.GetBytes("我是组播"));
三、广播
广播使用非常简单,
- 配置中启用广播UseBroadcast重要
3.1 创建广播服务器
广播接收时,是不需要加入组播组的。
//创建udpService
UdpSession udpService = new UdpSession();
udpService.Received = (remote, e) =>
{
Console.WriteLine(e.ByteBlock.ToString());
return EasyTask.CompletedTask;
};
udpService.Setup(new TouchSocketConfig()
.SetBindIPHost(new IPHost(7789))
.UseBroadcast()
.SetUdpDataHandlingAdapter(() => new NormalUdpDataHandlingAdapter()));
udpService.Start();