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

验证python中是否有可用的本地端口,python,linux,unix,port,Python,Linux,Unix,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 ==

我有一个生成子进程的项目,子进程又需要绑定一个端口号。端口号由我的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"

我能把这个用在我的箱子里吗?这不会打开一个端口,也不会关闭它以供进一步使用吗?

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

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

代码很好,它创建了一个套接字并尝试连接。它不会打开或关闭任何端口。您只需要在套接字的末尾添加这一行:
sock.close()

可能与@TessellatingHeckler重复这确实非常相似,但我只想看看随机端口是否可用。python脚本永远不应该自己使用它。这种方法本质上是容易失败的,因为在检查和实际使用之间有一个竞争条件——如果同时有人偷了这个端口呢?你能使用一个吗<代码>带闭合插座(…另请参见