我正在使用python中的socket,并且处于开发阶段我需要经常杀死并重新启动我的程序。
问题是,一旦杀死了我的python脚本,我就要等很长时间才能重新绑定listen套接字。这是一个重现问题的片段:
#!/usr/bin/env python3
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 4321))
try:
s.listen(5)
while True:
(a, b) = s.accept()
print(a.recv(1000))
except KeyboardInterrupt:
print("Closing")
s.shutdown(socket.SHUT_RDWR)
s.close()
命中C-z运行except代码,调用shutdown
和close
函数,但是在套接字超时(GNU / Linux环境)之前我无法重启程序。
我该如何避免这种情况?
答案 0 :(得分:4)
我不确定如何在Python中执行此操作,但您想设置SO_REUSEADDR套接字选项。