验证python中是否有可用的本地端口
我有一个生成子进程的项目,子进程又需要绑定一个端口号。端口号由我的Python脚本分配,我只需在49152和65535之间选择一个随机端口 我想验证该端口是否可用,并且本地系统(*nix)上的任何其他工具是否未使用该端口 我从中得到了以下片段:验证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 ==
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脚本永远不应该自己使用它。这种方法本质上是容易失败的,因为在检查和实际使用之间有一个竞争条件——如果同时有人偷了这个端口呢?你能使用一个吗<代码>带闭合插座(…另请参见