笔记--记录一次在libmodbus通讯过程socket的connect()遇到的Operation now in progress 的bug
先说结论: 因为我进行通讯的两台设备的mac 地址相同! 所以如果遇到这个问题的话 可以先去排查设备的mac 是否相同!!最近公司的一个项目用到了两台嵌入式linux设备之间通过modbus进行通讯,再实际测试中出现了以下的情况:两台设备虽然设置了不同的ip 但是通过SSH 进行远程登陆的过程中 还是很卡顿(排除网络问题了,内网且路由器下只有3个设备电脑+两个嵌入式设备)经过几天的排查以及前辈的点
先说结论: 因为我进行通讯的两台设备的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 地址,然后再产品的出厂的时候固化到产品中。
更多推荐
所有评论(0)