C Wireshark捕获的UDP数据包,但不是应用程序

C Wireshark捕获的UDP数据包,但不是应用程序,c,windows-8,udp,wireshark,C,Windows 8,Udp,Wireshark,我有一个带有两个以太网适配器的Windows8系统(专门用于测试网络设备)。我正在编写一个应用程序,它将在端口4950上通过整个本地网络发送一个“你在吗?”UDP广播,然后等待FPGA板的任何响应,这些响应会在端口4951上说“是的,我在这里。” 问题是,在Windows 8中(可能在旧版本中也是如此),向255.255.255.255发送广播实际上只会选择主网络适配器,但我的应用程序必须向计算机上的每个网络适配器发送广播。我在IP地址169.254.66.143(网络掩码为255.255.0.

我有一个带有两个以太网适配器的Windows8系统(专门用于测试网络设备)。我正在编写一个应用程序,它将在端口4950上通过整个本地网络发送一个
“你在吗?”
UDP广播,然后等待FPGA板的任何响应,这些响应会在端口4951上说
“是的,我在这里。”

问题是,在Windows 8中(可能在旧版本中也是如此),向
255.255.255.255
发送广播实际上只会选择主网络适配器,但我的应用程序必须向计算机上的每个网络适配器发送广播。我在IP地址
169.254.66.143
(网络掩码为
255.255.0.0
)处对第二个(非主要)NIC的广播进行了硬编码,因此应用程序将广播到
169.254.255.255
,以确定第二个NIC的网络上是否有任何板

电路板本身有一个静态IP地址
169.254.1.1
,因此当我的应用程序通过辅助NIC广播时,FPGA电路板会收到广播消息(
“你在吗?”
)(我可以确认这一点,因为电路板会通过串行端口告诉我它收到了以太网广播)。奇怪的是,尽管电路板确实在正确的端口4951上发送响应,但我的应用程序从未收到响应,而Wireshark在侦听辅助NIC时确实看到了响应包

另外,当我在尝试联系任何电路板失败前后运行
netstat-s
时,我看到
IPv4的UDP Statistics
下的
Receive Errors
计数器递增;Windows 8删除数据包似乎是因为有错误,而Wireshark接受数据包(并且没有说它有任何问题)

tl;dr:当Wireshark没有显示UDP数据包有任何问题时,是什么导致Windows 8丢弃UDP数据包?

哦,如果有人说“你的UDP代码不工作!”:应用程序会正确地从我的主NIC上的板上听到响应;只有当我将线路板移动到连接到辅助NIC的路由器时,我的应用程序才不会收到响应


我还禁用了Windows防火墙,以测试这是否是问题所在;事实并非如此。

的确很奇怪。关闭Windows防火墙显然没有关闭防火墙;我只需要手动将应用程序的规则从“阻止UDP”更改为“允许UDP”,现在一切正常

我知道现在回答这个问题已经很晚了。但如果这有帮助,请告诉我

请在广播模式下连续发送ARP回复数据包。如果ARP在网络中不存在,则ur数据包状态在windows堆栈中不存在。你不需要像100ms那样延迟发送arp请求


我也有同样的问题。在这种方法中,它被纠正了

对不起,我不再做那个工作了,无法测试。不过,谢谢你的帮助!