验证 python 中本地端口是否可用

SaA*_*mic 5 python unix linux port

我有一个项目,我在其中生成子进程,它再次需要一个端口号来绑定。端口号是由我的 Python 脚本分配的,我只是在 49152 到 65535 之间随机选择一个端口。

我想验证该端口是否可用并且未被本地系统(*nix)上的任何其他工具使用。

另一个问题我有这个片段:

import socket;
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('127.0.0.1',80))
if result == 0:
   print "Port is open"
else:
   print "Port is not open"
Run Code Online (Sandbox Code Playgroud)

我可以在我的情况下使用这个吗?这不会打开端口并且不会关闭它以供进一步使用吗?

sel*_*bie 6

只需创建一个临时套接字,然后尝试绑定到该端口以查看它是否可用。验证端口可用后关闭套接字。

def tryPort(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result = False
    try:
        sock.bind(("0.0.0.0", port))
        result = True
    except:
        print("Port is in use")
    sock.close()
    return result
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用[上下文管理器](https://docs.python.org/2/library/contextlib.html#contextlib.looking)吗?`带关闭插座(...` (2认同)