套接字关闭和重新绑定 - 如何避免漫长的等待?

时间:2010-02-28 15:15:38

标签: python linux sockets python-3.x

我正在使用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代码,调用shutdownclose函数,但是在套接字超时(GNU / Linux环境)之前我无法重启程序。

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:4)

我不确定如何在Python中执行此操作,但您想设置SO_REUSEADDR套接字选项。