Windows的setsockopt坏了吗?

时间:2009-04-28 09:14:59

标签: python windows sockets setsockopt

我希望能够重用一些端口,这就是我在套接字上使用 setsockopt 的原因,使用以下代码:

sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

然而,这并没有真正起作用。我也没有收到绑定错误,但服务器套接字只是没有响应(它似乎启动,但如果我尝试连接它,它不会进入选择循环)。如果脚本意外结束,则会出现此行为,如果我更改服务器正在侦听的端口,则一切都会再次运行。你能提供一些建议吗?

编辑:我将套接字重命名为袜子。这只是我为此代码段选择的名称。

2 个答案:

答案 0 :(得分:3)

似乎SO_REUSEADDR在Windows与Unix上具有不同的语义。

请参阅此msdn article(特别是“使用SO_EXCLUSIVEADDRUSE”下方的图表)和此unix faq

另请参阅此python bug discussion,此twisted bug discussion以及此差异列表between Windows and Unix sockets

答案 1 :(得分:1)

setsockopt是套接字对象的方法。模块socket没有setsockopt属性。