UDPClient 收不到数据
UDPClient doesn't Receive data
我的电脑上有 2 个 Iface。我通过所有 Ifaces 发送请求。但是我通过 1 Iface 接收数据。然而,在 Wireshark 中,我通过所有 Ifaces 看到了所有数据。如果我循环遍历所有接口而不是IPAddress.Any,这将起作用。
public static List<byte[]> ReceiveArrayData(int port, byte response, int timeout)
{
byte[] data;
List<byte[]> result = new List<byte[]>();
UdpClient udpClient = new UdpClient(port);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Stopwatch sw = new Stopwatch();
sw.Start();
while (true)
{
if (udpClient.Available > 0)
{ // получаем данные
data = udpClient.Receive(ref RemoteIpEndPoint);
if (data[0] == response)
{
result.Add(data);
System.Console.WriteLine(Functions.ByteArrayToString(data));
}
}
if (sw.ElapsedMilliseconds > timeout)
{
break;
}
}
udpClient.Close();
return result;
}
我在 windows 防火墙
中添加了对 public 网络的应用程序访问权限后,它就可以工作了
我的电脑上有 2 个 Iface。我通过所有 Ifaces 发送请求。但是我通过 1 Iface 接收数据。然而,在 Wireshark 中,我通过所有 Ifaces 看到了所有数据。如果我循环遍历所有接口而不是IPAddress.Any,这将起作用。
public static List<byte[]> ReceiveArrayData(int port, byte response, int timeout)
{
byte[] data;
List<byte[]> result = new List<byte[]>();
UdpClient udpClient = new UdpClient(port);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Stopwatch sw = new Stopwatch();
sw.Start();
while (true)
{
if (udpClient.Available > 0)
{ // получаем данные
data = udpClient.Receive(ref RemoteIpEndPoint);
if (data[0] == response)
{
result.Add(data);
System.Console.WriteLine(Functions.ByteArrayToString(data));
}
}
if (sw.ElapsedMilliseconds > timeout)
{
break;
}
}
udpClient.Close();
return result;
}
我在 windows 防火墙
中添加了对 public 网络的应用程序访问权限后,它就可以工作了