W5500在TCP_Client模式下,断电重启之后无法立即连接到服务器。

当客户端未主动断开导致服务器无法感知Socket异常时,重启后由于端口冲突无法立即重连。解决方案是启用KEEP_ALIVE,定时发送心跳包,服务器未收到回复则释放资源。若不能变动端口,可考虑自动+1处理,但某些场景如104规约不适用此方法。
摘要由CSDN通过智能技术生成

问题原因:

这是由于客户端没有主动发送断开请求,造成服务器并不知道Socket已发生异常断开; 重新上电之后,芯片以相同的IP和端口连接服务器,而服务器还认为此Socket链接存在,所以拒绝芯片的立即连接。

解决方案:

在芯片使用KEEP_ALIVE机制,一段时间内发送呼吸包,如果芯片没有给服务器回复,服务器则判断链接已断开,并释放Socket资源,这时就可以成功连接。如果对客户端的本地端口没有要求的话,也可以在初始化Socket的部分让端口自动+1处理。两种方式根据具体应用分析采用。(注: 有的场景不能采用端口自动+1的方式,比如电力104规约,只允许采用2404端口连接。)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值