保持打开的连接TCP / IP

时间:2012-05-25 10:05:45

标签: delphi sockets

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

Witch是从这些错误中恢复并保持连接打开的最好方法吗?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

我是如何阻止它在我的代码中发生的?好吧,有一个名为Keepalive的东西,如果仔细查看名称,Keep-Alive,它意味着保持连接活着,只需将Null数据发送到连接(可以是单向),这就是...

我做了一个Timer(命名为TmrKeepAlive)并将其间隔设置为5000毫秒(5秒),More info on KeepAlive

编辑:此外,如果您不想编写自己的KeepAlive机制,请检查this