先说结论: 因为我进行通讯的两台设备的mac 地址相同!  所以如果遇到这个问题的话  可以先去排查设备的mac 是否相同!!

最近公司的一个项目用到了两台嵌入式linux设备之间通过modbus进行通讯,再实际测试中出现了以下的情况:两台设备虽然设置了不同的ip  但是通过SSH 进行远程登陆的过程中 还是很卡顿(排除网络问题了,内网且路由器下只有3个设备,电脑+两个嵌入式设备)

经过几天的排查以及前辈的点拨最终发现是因为公司的所有产品的mac 地址相同导致,然后在同一内网下两台一样mac 地址的设备 就会出问题。 具体的问题可能是数据链路层会有问题,所以表现的效果就是 两台机器ssh 都很卡,然后两个机器虽然能ping 通,但是创建socket 连接的时候就会出现connection faild : Operation now in progress 的错误提示。

解决问题的方法也是很简单的,在设备的启动脚本里面将对应的网卡设置成不同的mac 地址就可以了。两台设备的mac 不一样就好了。

ifconfig eth0 down
ifconfig eth0 hw ether 00:11:22:33:44:55
ifconfig eth0 up
service network restart     

注意:我上面写的mac 地址不一定有效!!! 最正规的做法应该是需要花钱去买mac 地址,然后再产品的出厂的时候固化到产品中。

Logo

更多推荐