2

我正在使用 TClientSocket 和 TServerSocket 与服务器通信,问题是有时连接丢失是由于服务器向我发出以下异常:WsaSend 上的错误、访问冲突等或客户端:异步套接字错误。

Witch 是从这些错误中恢复并保持连接打开的最佳方法,无论如何?

4

2 回答 2

5

没有“无论如何保持连接打开”这样的事情。如果电缆被切断怎么办?您可以做的最好的事情是在某个时间间隔发送一个心跳,让中间路由器知道您仍然有兴趣使用该连接,并仔细处理所有错误,并在必要时重新建立连接。

于 2012-05-25T12:20:09.210 回答
1

好问题...您收到的是WSAECONNABORTED异步套接字错误 10053)。

我如何防止它发生在我的代码中?嗯,有一个东西叫 Keepalive,如果你仔细看名字,Keep-Alive,它的意思是保持连接处于活动状态,只需向连接发送 Null 数据(可以是 One-way),仅此而已……

我做了一个计时器(命名为 TmrKeepAlive)并将其间隔设置为 5000 毫秒(5 秒),有关 KeepAlive 的更多信息

编辑:另外,如果您不想编写自己的 KeepAlive 机制,请查看

于 2013-01-07T23:40:51.593 回答