Python 套接字库认为套接字未打开时已打开

2024-05-01

我正在使用一些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 处理程序关闭套接字连接,因此我不确定它是如何进入该状态的,但现在我只是尝试修复它。

Both lsof and netstat假设没有任何东西使用该端口:

[$]> sudo netstat -an | grep 43434
[$]> sudo lsof -i :43434

TIME_WAIT设置为 60 秒,根据/proc/sys/net/ipv4/tcp_fin_timeout,但即使在上次成功运行数小时后也会出现错误。

我尝试过(暂时)设置REUSEADDR (via single.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)),但这似乎没有效果。

这是怎么回事?我是否能够再次使用此端口而无需重新启动计算机?


尝试这个:
tcpkill -i eth0 端口 43434

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 套接字库认为套接字未打开时已打开 的相关文章

随机推荐