我知道网上有很多关于C#中UDP多播的例子。这只是为了澄清在仅发送时包含 JoinMulticastGroup 方法的必要性。我遇到的大多数代码示例几乎总是将此方法作为初始化代码的一部分。但当然,如果程序或类只是发送,那么它不是必需的吗?
即。在另一个stackoverflow问题上有人使用代码
public void SendMessage(string message)
{
var data = Encoding.Default.GetBytes(message);
using (var udpClient = new UdpClient(AddressFamily.InterNetwork))
{
var address = IPAddress.Parse("224.100.0.1");
var ipEndPoint = new IPEndPoint(address, 8088);
udpClient.JoinMulticastGroup(address);
udpClient.Send(data, data.Length, ipEndPoint);
udpClient.Close();
}
}
在这种情况下,行udpClient.JoinMulticastGroup(address);
实际上不是多余的吗?
答案 0 :(得分:1)
JoinMulticastGroup
确实是为了使套接字能够接收以该组地址为目的地的组播数据包。如果您的客户仅发送,则不一定非必要。
然而,它并没有受到伤害,并且确实有助于使代码清楚地表明您是“该组播组的一部分”。这样,如果需求在将来发生变化,并且此应用程序需要接收数据包,那么它将已成为多播组的一部分。
源主机通过简单地将数据报的目标IP地址设置为多播组地址,将数据发送到多播组。任何主机都可以成为源并将数据发送到多播组。在开始向组发送数据之前,源不需要以任何方式注册,也不需要自己成为组的成员。