Python 地址已经在使用中
在我的Python套接字程序中,我有时需要用Ctrl-C来中断它。 当我这样做时,它会使用socket.close()
closures连接。
但是,当我尝试重新打开它时,我必须等待一下,然后才能再次连接。 如何正确closures套接字? 或者这是打算?
是的,这是有意的。 在这里你可以阅读详细的解释 。 可以通过在套接字上设置SO_REUSEADDR选项来覆盖此行为。 例如:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
如果您在SocketServer模块中使用TCPServer,UDPServer或其子类,则可以设置此类variables(在实例化服务器之前):
SocketServer.TCPServer.allow_reuse_address = True
(通过SocketServer.ThreadingTCPServer – 程序重启后无法绑定到地址 )
这会导致init (构造函数):
if self.allow_reuse_address: self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
– > ps -fA | grep python
501 81211 12368 0 10:11 PM ttys000 0:03.12
python -m SimpleHTTPServer
– >杀81211
除了在调用HTTPServer(('',443),myHandler)之前使用此命令运行subprocess外,没有任何东西可以工作:
kill -9 $(lsof -ti tcp:443)
当然,这只适用于类似于Linux的操作系统!