C# Socket UDP组播

it2025-12-08  6

UDP组播方式

需要指定一个组播ip及端口,组播地址好查,就不解释了。 发送端将消息发送到该地址,接收端从该地址接收,使用时发现在同一网段有效,换其他人专业说法,在同一广播域有效,这个我没测试。 跨网段,必须打开三层交换机的组播路由协议,一般是PIM 稀疏模式。 组播协议主要包括组管理协议(IGMP)和组播路由协议(密集模式协议(如DVMRP,PIM-DM)、稀疏模式协议(如PIM-SM,CBT) 和链路状态协议(MOSPF))。

记录下基本代码

//发送端代码 UdpClient client= new UdpClient(sendPort); client.JoinMulticastGroup(IPAddress.Parse(multiCastIp));//加入组播组,组播源可不属于组播组 IPEndPoint multicast= new IPEndPoint(IPAddress.Parse(multiCastIp), multiCastPort); byte[] buf = Encoding.Default.GetBytes(msg); client.Send(buf, buf.Length, multicast); //接收端代码 UdpClient client = new UdpClient(receivePort); client.JoinMulticastGroup(IPAddress.Parse(multiCastIp));//加入组播组 IPEndPoint multicast = new IPEndPoint(IPAddress.Any, 0);//接收时保存组播源地址 byte[] buf = client.Receive(ref multicast); string msg = Encoding.Default.GetString(buf); //这里遇到个情况,关闭程序时要执行 client.Close();否则将有进程后台运行,无法停止。
最新回复(0)