我有一个运行在我的Raspberry Pi上的小服务器,它监听特定的端口。但是,无论何时在连接期间发生异常并且连接终止,看起来对端口的分配都不是“未绑定”。Python套接字编程:异常后的“地址已经在使用”
这是一个例子代码:
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind(('', 5005))
s.listen(1)
with s.accept()[0] as c:
raise Exception() # Act as if anything goes wrong
当我运行它的第一次和另一终端上做一个telnet localhost 5005
,在建立连接和服务器引发异常如预期。 然而,当我尝试运行它第二次,我得到这个错误:
Traceback (most recent call last):
File "testsocketexception.py", line 4, in <module>
s.bind(('', 5005))
OSError: [Errno 98] Address already in use
我怎样才能确保即使有异常的服务器上提出的插座是绑定? (顺便说一下,这在Windows中似乎不会发生。)
是的,它现在工作,谢谢! – elzell