UdpClient JoinMulticastGroup多个NIC问题

时间:2014-08-15 14:50:02

标签: c#-4.0 network-programming udpclient

我遇到了一个问题,UDPClient仅在我禁用计算机栏上的所有网卡时才能使用。如果我使用的网卡多于1张,则会永久阻止。我可以看到数据在wireshark上传来,所以我可以收到它。

无论如何,我发现多个网卡存在问题,但建议的解决方案是在EndPoint构造函数中设置一个特定的UdpClient,其中包含您要使用的网卡的IP。代码如下:

public void ReceiveData()
{
    try
    {
        receiveClient = new UdpClient(new IPEndPoint(AConfiguredIPAddressofOneOfMyNICs, port));                                
        receiveClient.JoinMulticastGroup(IPAddress.Parse("240.0.0.1"));

        IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0);

        Byte[] receiveBytes = receiveClient.Receive(ref endPoint); // blocks forever

任何人的想法?

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。您需要在JoinMulticastGroup调用中指定要用于接收数据包的NIC的IP地址。所以这个:

receiveClient.JoinMulticastGroup(ConfigFile.MulticastIP);

成为这个:

receiveClient.JoinMulticastGroup(ConfigFile.MulticastIP, AConfiguredIPAddressofOneOfMyNICs);