笔记--记录一次在libmodbus通讯过程socket的connect()遇到的Operation now in progress 的bug
发布日期:2021-06-30 13:42:13 浏览次数:2 分类:技术文章

本文共 612 字,大约阅读时间需要 2 分钟。

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

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

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

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

ifconfig eth0 downifconfig eth0 hw ether 00:11:22:33:44:55ifconfig eth0 upservice network restart

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

转载地址:https://jeason.blog.csdn.net/article/details/109560870 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:modbus调试工具开发(1)--windows下编译libmodbus库文件
下一篇:工作笔记::VSCode使用笔记--VSCode 设置自定义快捷键 设置自定义运行脚本

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月24日 04时57分36秒