我遇到了一个问题,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
任何人的想法?
答案 0 :(得分:0)
我发现了问题所在。您需要在JoinMulticastGroup调用中指定要用于接收数据包的NIC的IP地址。所以这个:
receiveClient.JoinMulticastGroup(ConfigFile.MulticastIP);
成为这个:
receiveClient.JoinMulticastGroup(ConfigFile.MulticastIP, AConfiguredIPAddressofOneOfMyNICs);