【问题标题】:TCP server hangs, not responding to SYNTCP 服务器挂起,不响应 SYN
【发布时间】:2021-01-07 20:35:01
【问题描述】:

我有一个奇怪的问题,TCP 服务器有时会挂起。奇怪的问题是,当它挂起时,它没有收到任何新的连接,即没有响应初始的 TCP SYN 数据包。我很确定,由于 TCP 握手是由内核处理的,即使程序挂起,客户端也至少应该接收到初始的 SYN,ACK。如果有人知道程序可能以某种方式挂起,从而阻止操作系统完成 TCP 握手(并且没有关闭侦听套接字),请告诉我。

附: 该程序是用C++编写的,操作系统是Windows Server 2016。

【问题讨论】:

标签: c++ networking tcp


【解决方案1】:

很可能,侦听队列已满。不响应初始 SYN 会导致对方稍后再尝试另一个 SYN。运气好的话,那个时候监听队列不会满的。该程序可能没有足够频繁地调用accept(或一些类似的函数)。

也有可能程序正在使用选择性接受功能(请参阅WSASelectlpfnCondition 参数)来选择不响应此连接尝试。

【讨论】:

  • 似乎它确实在听(s, 5)。基本上这意味着有 5 个挂起的连接尚未被接受,对吗?
  • 很可能,是的。
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2014-06-04
  • 2012-06-19
  • 1970-01-01
相关资源
最近更新 更多