硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3165|回复: 2
收起左侧

[RL-TCPnet] TCP Client断开网络和插拔网线,重新连接的几种情况分析(原始socket,非BSD Socke

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
发表于 2017-5-15 12:40:14 | 显示全部楼层 |阅读模式
这个问题的情况比较多,整理下:
为了客户端跟服务器的长时间连接,会使能keep-alive,保证长时间连接。这种情况下,
1. 如果服务器端断开了连接,或者直接关闭服务器,客户端会执行Net_Config.c文件中设置的重连次数和重连时间。
都溢出了,是不会再连接了。所以就需要通过函数tcp_get_state判断状态,实时调用函数tcp_connect进行连接。
而且针对这种情况,实际效果还有些特殊,一旦服务器端断开后,重新连接的时候有时候可以立即连接上,有时候不行,
程序一直在发SYN包,差不多15秒左右才可以重连上。
2. 还有一种情况就是网线插拔了,这种情况的话,通过函数tcp_get_state判断状态,实时调用函数tcp_connect进行连接就好。


总结,不管是哪一种情况,都要不断的调用tcp_connect进行重连。重连的时候他有一个重连次数和重连时间的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
 楼主| 发表于 2017-5-23 11:46:34 | 显示全部楼层
对于客户端,每次发送前做一次判断也不失为好的方法,当前的开发板例程就是采用的这种方法。
1.png
回复

使用道具 举报

1

主题

39

回帖

42

积分

新手上路

积分
42
发表于 2017-5-23 16:56:27 | 显示全部楼层
[s:151]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-5 03:38 , Processed in 0.161612 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表