Python socket library thinks socket is open when it's not
我正在使用一个类似这样的Python:
1 2 3 4 5 6 7 | 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. |
虽然它在过去运行良好,但现在我们得到了错误
1 2 | [$]> sudo netstat -an | grep 43434 [$]> sudo lsof -i :43434 |
根据
我试过(暂时)设置
停机坪发生了什么?我是否可以再次使用此端口而不必重新启动计算机?
我想添加一个评论,但它不允许我这样做。所以我必须这样回答。根据我的经验,我必须做以下工作才能使插座工作成功。我必须自己明确设置超时。
在打开套接字之前的代码中,如果您使用的是Python2.3或更高版本,则应设置此项。我通常从30秒的超时开始,然后将其调到特定网站的工作状态。当我不使用此参数时,会出现片状问题。
1 | socket.setdefaulttimeout(timeout) |
我在公开赛之后做的其他问题是捕获以下一些例外:
1 2 3 4 | except socket.gaierror, err: # you might want to handle this except socket.sslerror, err2: # you might want to handle this if doing SSL |
试试这个:
tcpkill-i eth0端口43434
您可以尝试设置
但是,您说您的python代码看起来像您发布的代码。您是否尝试过一个非常简单的程序版本来只测试绑定?
你也可以尝试偏离你的计划。