68336016 发表于 2021-11-24 07:09:08

tcp客户端,socket掉线重连,比较标准的做法是怎样的??

比如设备运行tcp客户端,接在路由器下,重启路由器或者拔插网线,应用层检测到socket断开了,只要简单的重新建立socket连接就行。

如果极端一点,路由器修改LAN端的网段,或者将设备不断电接到其它路由器下,设备就只能将网络重新初始化(不断电)获取新ip后才能重连。时间会比较长些。

socket重连比较常用的做法是怎样的呢?
直接重连几次不行就来几次网络重新初始化重连?

wochai 发表于 2021-11-24 08:38:30

我的做法是: 持续一段时间未收到数据,就关闭连接,然后重新连接.

初音之恋 发表于 2021-11-24 17:20:55

我这边是3分钟连不上就重新DHCP一次,第二种情况很容易越到,之前遇到过有个比较坑的路由器半夜12点固定重启丢IP。。。,或者路由器访问不到自己的服务端也会重启。。。,不初始化设备就永远挂了

68336016 发表于 2021-11-24 17:38:44

初音之恋 发表于 2021-11-24 17:20
我这边是3分钟连不上就重新DHCP一次,第二种情况很容易越到,之前遇到过有个比较坑的路由器半夜12点固定重 ...

我也是因为路由器定时重启才想起这事情,一般情况下重启之后设备的IP还是有效的,但是有时会无效,必须重新获取IP

68336016 发表于 2022-4-14 15:30:22

用的paho-mqtt库,板子自己家用的,感觉算强壮了,路由器不管断电掉线什么的,板子重连不成,大不了重启,总能跟外面mqtt服务器重连成功。

没想昨天到发现新问题,要是光猫重启,板子就算自动重启也没法重连mqtt服务器。
重连的时间间隔也设置为2,30秒,避免被服务器屏蔽。

彻底断电几十秒以上,再重连倒是一次能连上。

youkebing 发表于 2022-4-14 16:18:19

68336016 发表于 2022-4-14 15:30
用的paho-mqtt库,板子自己家用的,感觉算强壮了,路由器不管断电掉线什么的,板子重连不成,大不了重启, ...
(引用自5楼)

看不懂,板子断电和自动重启有区别吗?会不会重启没有复位PHY?

68336016 发表于 2022-4-14 17:23:41

youkebing 发表于 2022-4-14 16:18
看不懂,板子断电和自动重启有区别吗?会不会重启没有复位PHY?
(引用自6楼)

ch579,带网络的M0芯片,自带phy。
用起来但是容易,但是有问题就比较难,不像stm32那样多人用
页: [1]
查看完整版本: tcp客户端,socket掉线重连,比较标准的做法是怎样的??