gpt4 book ai didi

c - 为什么socket关闭后端口没有立即释放?

转载 作者:太空狗 更新时间:2023-10-29 15:26:41 25 4
gpt4 key购买 nike

我发现默认情况下操作系统不会在服务器关闭后立即释放我的服务器套接字使用的端口。通过在设置套接字时给出SO_REUSEADDR可以避免这个问题,但是我不明白为什么保持端口一段时间有用。如果服务器关闭,套接字关闭,传输到该端口的任何数据都不会被处理,对吗?

最佳答案

当端口被释放时,它会进入 TIME_WAIT 状态,以防止在发送到第一个连接的途中被延迟的重复数据包被传送到第二个连接。

这是在没有 TIME_WAIT 的情况下可能发生的情况:

  • 从(地址a,端口p)到(地址b,端口q)的连接终止
  • 建立从(地址a,端口p)到(地址b,端口q)的第二个连接
  • 来自第一个连接的重复数据包在网络中延迟,并在其序列号位于第二个连接的窗口中时到达第二个连接。

这是一个很好的answer explaining how to deal with this .这是一篇解释 how to mitigate the effects of TIME_WAIT on busy servers 的文章.

关于c - 为什么socket关闭后端口没有立即释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22549044/

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