gpt4 book ai didi

c++ - Winsock TCP 监听器在 closesocket() 调用成功后保持在 LISTENING 状态

转载 作者:可可西里 更新时间:2023-11-01 02:52:49 25 4
gpt4 key购买 nike

我正在处理一个现有的 DLL,其中创建了一个 TCP 监听套接字,并设置为在出现故障时使用 SO_REUSEADDR 立即重新绑定(bind)到同一个套接字。然而,目前存在一个问题,即使在成功调用 closesocket() 之后,监听器仍将保持在 LISTENING 状态;由于它没有进入 TIME_WAIT,因此在重新创建套接字时会在同一端口上创建一个新的监听器。然后客户端无法连接到新的监听器(大概)。 SO_LINGER 设置为 0 秒。套接字关闭时没有挂起的传输。最旧的套接字似乎在大约十秒后关闭,而没有明显进入另一种状态。

在成功调用 closesocket() 后,什么可以使监听器保持在 LISTENING 状态?

最佳答案

  1. 你关闭了错误的套接字。
  2. 您复制了句柄而忘记关闭拷贝。
  3. 其他人抢购了该端口。
  4. 您的失败代码会检测到监听器的失败,而其他事情是失败的。
  5. 您的监听器在未失败时报告失败。
  6. 您的故障模式破坏了状态,因此 closesocket() 关闭了其他东西。

关于c++ - Winsock TCP 监听器在 closesocket() 调用成功后保持在 LISTENING 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9024090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com