简单的UDP监听需要打开w网路岗才能接收到数据的原因和解决办法

在做网络通讯项目过程中遇到一个问题:两张光纤通讯网卡之间通过单模光纤发送UDP数据,而只有打开网卡数据采集软件如:网路岗或Wireshark时才能看到数据包,用普通的网络调试助手或者自己开发的数据采集软件无法收到数据。

经过问题定位,发现是两张网卡的mac地址不对造成的:在UDP通讯过程中,发送端需要知道目标地址的mac地址,而接收端在接收时会判断数据包是否与自己的mac地址一致,如果一致就接收和处理数据,不一致就不接收和处理。网路岗或Wireshark在采集网卡上的UDP数据时,屏蔽掉了mac地址,所以可以收到相同IP地址的数据并显示,但是普通的UDP数据采集软件或自己开发的UDP数据采集软件不能做到这样一步,所以只有在打开网路岗或Wrieshark软件时,自己开发的软件或网络调试助手才采集到了数据。不打开网络岗或Wireshark时,数据包被丢弃掉。

处理办法:将接受端的mac地址设置为与发送端的mac地址相同,这样就可以直接用网络调试助手或者自己开发的软件采集数据了。更进一步分析,两张光纤网卡不在同一个局域网中,这样进行UDP通讯时,发送端寻找目标地址的网卡时不能获取到,发送端通过发送ARP请求包获取目标地址网卡,不在同一局域网时,收不到目标地址网卡返回的ARP包,所以就失败了,网上有做上位机和下位机开发的人也遇到相似的问题,但是没有说明解决办法。还是记下来对以后开发有帮助。

物理网卡的mac地址设置可以在网上轻易找到,这里就不做多余的叙述了。

你可能感兴趣的:(技术交流,mfc,udp,局域网,光纤,网卡)