【问题标题】:Python Socket Binding : Retry until Socket/Port is available and not in use anymorePython 套接字绑定:重试直到套接字/端口可用且不再使用
【发布时间】:2021-01-07 06:56:59
【问题描述】:

我在创建 python 套接字时遇到了问题。一旦我使用 close() 关闭了一个 Socket,然后重试 socket.bind() 到同一个端口,我会得到OSError : 98 Address already in use,即使该端口没有被使用(仔细检查netstat -nlp | grep port)。我知道这是由于 TCP 套接字的 TIME_WAIT 或挂起时间,因为套接字在几分钟后绑定。

有什么方法可以循环 python 程序继续尝试绑定到该端口直到它变为可用,而不是立即退出程序。?

提前谢谢你

保罗·帕维什

【问题讨论】:

    标签: python linux sockets


    【解决方案1】:

    您可以简单地catch 正在抛出的异常并在循环中重试绑定。 例如:

    bound = False
    while not bound:
        try:
            s.bind((address, port))
            bound = True
        except OSError:
            print("Failed to bind, trying again in 5 seconds...")
            time.sleep(5)
    

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 2012-11-29
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2015-07-04
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多