我正在学习如何在Python中使用套接字,但经常遇到程序崩溃或我使用Ctrl+C停止程序后,服务器套接字仍然保持在端口上监听。这显然会阻止程序再次启动时监听该端口,所以我必须不断更改它。
我猜想我需要在某个地方执行socket.close(),但是在哪里呢?
我猜想我需要在某个地方执行socket.close(),但是在哪里呢?
import atexit
function close_socket:
s.close()
atexit.register(close_socket)
如果问题是测试期间端口变得不可用的延迟,我建议设置 SO_REUSEADDR
,这将允许端口立即重新绑定,而不是等待 TCP 栈上的超时。s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)