首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么可以立即重用tcp套接字地址而不在Windows上设置SO_REUSEADDR?

为什么可以立即重用tcp套接字地址而不在Windows上设置SO_REUSEADDR?
EN

Stack Overflow用户
提问于 2015-06-26 11:46:16
回答 1查看 102关注 0票数 1

我正在阅读Python编程的基础,并尝试如下代码。

sixteen.py

当注释打开socket.SO_REUSEADDR的行时,它会在Linux上引发一个OSError,一切都很好。但是在Win8上,即使我显式地关闭了socket.SO_REUSEADDR,它的行为也是正常的。为什么会有这种行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-26 13:01:22

通常,当服务器套接字处于SO_REUSEADDR状态时,必须使用TIME_WAIT标志。这是一种非常保守的方法,可以确保来自先前连接的任何杂散数据不会被服务器再次接收,并造成混乱,因为序列号可能与以前的序列号不同。通常情况下,发生这种情况的可能性很低。TIME_WAIT状态的超时非常高(通常为30秒)。

OS可能会选择通过设置一些配置参数来允许重用连接。例如:在Linux中,它是/proc/sys/net/ipv4/tcp_tw_*这个链接已经得到了有关它的详细信息。

此链接已经有了一些关于windows的细节。您可能需要检查这个值是多少。或者,如果您正在打开大量连接,很可能--连接a被Windows快速重复使用--而不必显式地需要SO_REUSEADDR,如链接中所述,可用的TCB块数量较少。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31072396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档