【发布时间】:2018-11-23 19:02:17
【问题描述】:
我的电脑上有 2 个 Iface。我通过所有 Ifaces 发送请求。但我通过 1 Iface 接收数据。但是,在 Wireshark 中,我通过所有 Iface 查看所有数据。如果我循环遍历所有接口而不是 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 防火墙,它会起作用。我必须添加规则。但是我尝试在异常防火墙中添加我的 udp 端口,它不起作用
-
在防火墙中添加对公共网络的应用程序访问后,它可以工作