我正在使用 TClientSocket 和 TServerSocket 与服务器通信,问题是有时连接丢失是由于服务器向我发出以下异常:WsaSend 上的错误、访问冲突等或客户端:异步套接字错误。
Witch 是从这些错误中恢复并保持连接打开的最佳方法,无论如何?
没有“无论如何保持连接打开”这样的事情。如果电缆被切断怎么办?您可以做的最好的事情是在某个时间间隔发送一个心跳,让中间路由器知道您仍然有兴趣使用该连接,并仔细处理所有错误,并在必要时重新建立连接。
好问题...您收到的是WSAECONNABORTED(异步套接字错误 10053)。
我如何防止它发生在我的代码中?嗯,有一个东西叫 Keepalive,如果你仔细看名字,Keep-Alive,它的意思是保持连接处于活动状态,只需向连接发送 Null 数据(可以是 One-way),仅此而已……
我做了一个计时器(命名为 TmrKeepAlive)并将其间隔设置为 5000 毫秒(5 秒),有关 KeepAlive 的更多信息。
编辑:另外,如果您不想编写自己的 KeepAlive 机制,请查看此