【发布时间】:2013-12-31 15:36:45
【问题描述】:
我正在设计一个 TCP 服务器,我需要尽快删除 half-opened connections。每n 秒,我都会尝试向客户端发送一些数据,当我收到错误时,我会停止轮询它们。
它工作得很好,除了我的客户收到一些垃圾我每n 秒发送给他们并且必须解析它。
我想发送一个零字节数据的 TCP 段。是否可以修改 TCP 段头并发送某种没有数据的假 SYN 或 ACK 段?
【问题讨论】:
-
你想达到什么目的?
-
@EdHeal 谢谢你的评论。我正在尝试检测服务器端的半开连接,以便从轮询例程中删除死客户端套接字(检查是否有一些数据到达它们)。所以我想向客户端发送没有数据的keepalive数据包,看看它们是否仍然连接。
-
为什么会出现这个问题?
-
@EdHeal 这是问题所在,因为服务器浪费了处理器时间来轮询永远不会有传入数据的死套接字。
-
@EdHeal,随着新客户端的连接和断开,问题显然会像滚雪球一样增长。