c# - 多播Socket.RecieveFrom:can port为0

时间:2016-01-15 22:19:47

标签: c# sockets

美好的一天

通过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();
}

1 个答案:

答案 0 :(得分:0)

仔细阅读文档。以这种方式给出的初始值允许函数调用ReceiveFrom从所有远程IP地址和端口获取IPv4中的数据包。

如果指定专用IP地址或端口,则以下呼叫将不会接收所有其他数据包。