我希望能够重用一些端口,这就是我在套接字上使用 setsockopt 的原因,使用以下代码:
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
然而,这并没有真正起作用。我也没有收到绑定错误,但服务器套接字只是没有响应(它似乎启动,但如果我尝试连接它,它不会进入选择循环)。如果脚本意外结束,则会出现此行为,如果我更改服务器正在侦听的端口,则一切都会再次运行。你能提供一些建议吗?
编辑:我将套接字重命名为袜子。这只是我为此代码段选择的名称。
答案 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
属性。