美好的一天
通过msdn multicasting page,在"听众"部分,在代码中,使用IPAddress.Any,Port = 0创建新的ENdpoint。
IPAddress.Any是可以理解的,但端口0让我感到困惑。它不应该在mcastport上听吗?
IPEndPoint groupEP = new IPEndPoint(mcastAddress, mcastPort);
EndPoint remoteEP = (EndPoint) new IPEndPoint(IPAddress.Any,0); <======THIS LINE
try
{
while (!done)
{
Console.WriteLine("Waiting for multicast packets.......");
Console.WriteLine("Enter ^C to terminate.");
mcastSocket.ReceiveFrom(bytes, ref remoteEP);
Console.WriteLine("Received broadcast from {0} :\n {1}\n", groupEP.ToString(), Encoding.ASCII.GetString(bytes,0,bytes.Length));
}
mcastSocket.Close();
}
答案 0 :(得分:0)
仔细阅读文档。以这种方式给出的初始值允许函数调用ReceiveFrom
从所有远程IP地址和端口获取IPv4中的数据包。
如果指定专用IP地址或端口,则以下呼叫将不会接收所有其他数据包。