最近编写了一个接收udp组播的上位机,发现本台电脑能接受到FPGA发来的组播数据,换了一台电脑却无法接收到数据。
在新的电脑上启动抓包软件后,上位机能够正常接收数据。
不明白为什么会出现这种情况。
在查找相关资料之后,发现一般的抓包软件在抓包的时候,会将网卡配置为混杂模式。
而网卡有两个模式,一般模式,就只接受发向网卡MAC地址的数据,其他数据会被过滤掉。而混杂模式,网卡将接收所有经过它的数据。
这下真相大白了,FPGA发来的数据包只指定了我原来电脑的MAC地址,换电脑之后,新的电脑无法接收到数据,上位机也就无法工作。开启抓包软件后,网卡被配置为混杂模式,FPGA的数据不再被过滤,上位机就能够正常工作了。
最终,把FPGA发来的数据包中的MAC地址设为全F就行了。