socket 断开自动重连,该怎么处理
socket 断开自动重连
服务器 - 客户端 之间 socket 通信,要做一个断开自动重连的功能。
服务器 -- 客户端 通过 心跳包 检测是否断开, 这个没有问题。
我的问题是:
1: 客户端程序 退出,然后再启动, 然后 创建 socket 然后 connect , 但是, 这个时候 服务器一直在运行,并没有 在 accept 阻塞等待。 但 现象是, connect 竟然能连上(为什么?), 但是 该 socket 数据收发 有问题, 然后 就通过心跳包检测到 连接异常。
2:如果服务器 程序退出, 然后启动, 客户端能检测到 连接异常, 客户端代码 会 重新 connect , 理论 上 等到 服务器运行 到 accept 的时候,就能连上, 但是死活连不上。
3: 有没有 类似 一些 细节上的设置, 比如, 重新连接的话, 是先要 close socket 然后重新创建 socket 还是 可以用原来的 socket
------解决思路----------------------
第一个 只是连接上,但是服务器端并没有接受这个连接,收发数据肯定有问题吧
第二个,先shutdown关闭连接再调用connect试试
第三个,如果上面那个不行,就close再重连,应该可以的
------解决思路----------------------
也许对于操作系统来说没有accept也可以正常建立TCP的连接,但是没有accept,这个连接对程序来说是不可用的
服务器 - 客户端 之间 socket 通信,要做一个断开自动重连的功能。
服务器 -- 客户端 通过 心跳包 检测是否断开, 这个没有问题。
我的问题是:
1: 客户端程序 退出,然后再启动, 然后 创建 socket 然后 connect , 但是, 这个时候 服务器一直在运行,并没有 在 accept 阻塞等待。 但 现象是, connect 竟然能连上(为什么?), 但是 该 socket 数据收发 有问题, 然后 就通过心跳包检测到 连接异常。
2:如果服务器 程序退出, 然后启动, 客户端能检测到 连接异常, 客户端代码 会 重新 connect , 理论 上 等到 服务器运行 到 accept 的时候,就能连上, 但是死活连不上。
3: 有没有 类似 一些 细节上的设置, 比如, 重新连接的话, 是先要 close socket 然后重新创建 socket 还是 可以用原来的 socket
------解决思路----------------------
第一个 只是连接上,但是服务器端并没有接受这个连接,收发数据肯定有问题吧
第二个,先shutdown关闭连接再调用connect试试
第三个,如果上面那个不行,就close再重连,应该可以的
------解决思路----------------------
也许对于操作系统来说没有accept也可以正常建立TCP的连接,但是没有accept,这个连接对程序来说是不可用的