在 Python 中获取开放的 TCP 端口

新手上路,请多包涵

我想在 Python 中的本地主机上获得任何随机打开的 TCP 端口。最简单的方法是什么?

原文由 Albert 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 656
2 个回答

我目前的解决方案:

 def get_open_port():
        import socket
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind(("",0))
        s.listen(1)
        port = s.getsockname()[1]
        s.close()
        return port

不是很好,也不是 100% 正确,但它现在有效。

原文由 Albert 发布,翻译遵循 CC BY-SA 2.5 许可协议

可以通过将套接字绑定到操作系统选择的端口来找到空闲端口。操作系统选择一个端口后,就可以处理套接字。但是,此解决方案无法抵抗竞争条件——在获取空闲端口号和使用此端口之间的短时间内,其他进程可能会使用此端口。

 import socket

def find_free_port():
    with socket.socket() as s:
        s.bind(('', 0))            # Bind to a free port provided by the host.
        return s.getsockname()[1]  # Return the port number assigned.

https://godbolt.org/z/fs13K13dG

原文由 Paweł Bylica 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题