【发布时间】:2017-09-02 09:50:35
【问题描述】:
我有一个项目,我在其中生成子进程,这些子进程又需要一个端口号来绑定。端口号由我的 Python 脚本分配,我只是在 49152 和 65535 之间随机取一个端口。
我想验证该端口是否可用并且没有被本地系统上的任何其他工具使用 (*nix)。
来自another question我有这个sn-p:
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"
我可以在我的情况下使用它吗?这不会打开一个端口,也不会关闭它以供进一步使用吗?
【问题讨论】:
-
@TessellatingHeckler 这个确实很像,不过我就是想看看随机端口有没有。 python 脚本永远不应该真正为自己使用它。
-
这种方法本质上是容易失败的,因为您在检查和实际使用之间存在竞争条件 - 如果同时其他人窃取了该端口怎么办?