如何解决W5500芯片在TCP_Client模式下断电重启之后无法立即...
-
-
Katrina
- LV3工程师
-
| 2018-02-27 10:25:54
- 浏览量 1614
- 回复:0
本帖最后由 Katrina 于 2018-2-27 10:27 编辑
如何解决W5500芯片在TCP_Client模式下,断电重启之后无法立即连接到服务器的问题。R:这是由于客户端没有主动发送断开请求,造成服务器并不知道Socket已发生异常断开; 重新上电之后,芯片以相同的IP和端口连接服务器,而服务器还认为此Socket链接存在,所以拒绝芯片的立即连接。
A:解决方案:在芯片使用KEEP_ALIVE机制,一段时间内发送呼吸包,如果芯片没有给服务器回复,服务器则判断链接已断开,并释放Socket资源,这时就可以成功连接。如果对客户端的本地端口没有要求的话,也可以在初始化Socket的部分让端口自动+1处理。两种方式根据具体应用分析采用。注: 有的场景不能采用端口自动+1的方式,比如电力104规约,只允许采用2404端口连接。
本帖最后由 Katrina 于 2018-2-27 10:27 编辑
如何解决W5500芯片在TCP_Client模式下,断电重启之后无法立即连接到服务器的问题。R:这是由于客户端没有主动发送断开请求,造成服务器并不知道Socket已发生异常断开; 重新上电之后,芯片以相同的IP和端口连接服务器,而服务器还认为此Socket链接存在,所以拒绝芯片的立即连接。
A:解决方案:在芯片使用KEEP_ALIVE机制,一段时间内发送呼吸包,如果芯片没有给服务器回复,服务器则判断链接已断开,并释放Socket资源,这时就可以成功连接。如果对客户端的本地端口没有要求的话,也可以在初始化Socket的部分让端口自动+1处理。两种方式根据具体应用分析采用。注: 有的场景不能采用端口自动+1的方式,比如电力104规约,只允许采用2404端口连接。