跳到主要内容
版本:2.0

组播、广播

定义

命名空间:TouchSocket.Sockets
程序集:TouchSocket.dll

一、说明

  • 广播BroadCast:主机之间“一对所有”的通讯模式,广播者可以向网络中所有主机发送信息。广播禁止在Internet宽带网上传输(广播风暴)。
  • 多播MultiCast:主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据。

二、组播使用

组播使用非常简单,

  1. 配置中启用广播UseBroadcast重要
  2. 在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.Send(new IPEndPoint(IPAddress.Parse("224.5.6.7"), 7789), Encoding.UTF8.GetBytes("我是组播"));

三、广播

广播使用非常简单,

  1. 配置中启用广播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();

3.2 发送广播数据

UdpSession udpClient = new UdpSession();
udpClient.Setup(new TouchSocketConfig()
.UseBroadcast()//该配置在发送广播时是必须的
.SetBindIPHost(new IPHost(7788))
.SetUdpDataHandlingAdapter(() => new NormalUdpDataHandlingAdapter()));
udpClient.Start();

udpClient.Send(new IPEndPoint(IPAddress.Parse("255.255.255.255"), 7789), Encoding.UTF8.GetBytes("我是广播"));
注意

在发送广播数据时,发送端配置UseBroadcast是必须的。