【发布时间】:2019-10-27 13:22:52
【问题描述】:
我使用 DreamHost 作为我的 server.py 的托管提供程序。如果我在本地运行我的代码,setsockopt 函数成功地将参数 SOCKET_REUSEADDR 设置为 True,我可以有效地重用端口。但是当我在主机上运行 server.py 时,我收到错误 '[Errno 98] Address in use'
运行`ps aux | grep python' 并使用 kill -9 PID 手动关闭进程使我有可能在开始时重用端口。但这是否意味着 'socket.setsockopt' 不起作用?
server.py
host = 'Dreamhost_IP'
port = 33000
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
server_socket.bind((host,port))
.
.
.
.
.
if __name__=="__main__":
server_socket.listen(5)
print('waitin for connections')
accept_thread = threading.Thread(target = accept_connections)
accept_thread.start()
accept_thread.join()
server_socket.close()
I'm expecting to be able to reuse the desired port by overriding the wait time with SO_REUSEADDR. If I use '127.0.0.1' as 'host' and 33000 as 'port', I can successfully rerun the server on that port.
【问题讨论】:
标签: python-3.x sockets serversocket python-sockets