我正在使用一些看起来像这样的 Python:
HOST = '127.0.0.1'
PORT = 43434
single = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
single.bind((HOST, PORT))
except socket.error as e:
# Print an error, exit.
虽然它过去运行良好,但我们现在得到了错误[Errno 98] Address already in use
。SIGINT 处理程序关闭套接字连接,所以我不确定它是如何进入该状态的,但现在我只是想修复它。
两者lsof
都说netstat
没有使用该端口:
[$]> sudo netstat -an | grep 43434
[$]> sudo lsof -i :43434
TIME_WAIT
根据 设置为 60 秒,/proc/sys/net/ipv4/tcp_fin_timeout
但即使在上次成功运行数小时后也会发生错误。
我试过(暂时)设置REUSEADDR
(通过single.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
),但这似乎没有效果。
tarnation 发生了什么?我是否能够再次使用此端口而无需重新启动机器?