python - 如何在 Linux 中找到开放端口?

标签 python linux unix networking tcp

是否有某种系统调用会返回端口是否可用?或者至少是一种不会使您的流程成为坏公民的传统方式?

目前我是这样做的:

def find_open_port(min_port, max_port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    for port in range(min_port, max_port):
        if port > max_port:
            raise IOError('Could not find a free port between {0} and {1}'.format(min_port, max_port))
        try:
            s.bind(('localhost', port))
            return port
        except socket.error as error:
            if error.strerror == 'Address already in use':
                continue
            else:
                raise error

讨厌!

最佳答案

据我所知,检查特定端口是否可用的最简单方法是尝试绑定(bind)到它或尝试连接到它(如果您需要 TCP)。如果绑定(bind)(或连接)成功,则它可用(正在使用)。

但是,如果您只是想要任何开放端口,您可以绑定(bind)到端口 0,操作系统会为您分配一个端口。

关于python - 如何在 Linux 中找到开放端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272051/

相关文章:

python - 使用 token 向 Kubernetes 集群进行身份验证

linux - LD_LIBRARY_PATH 在 bash 脚本中失败

linux - Shell 脚本错误 : No such file or directory

java - 您会推荐哪种 Java 服务或守护进程框架?

python - 尝试 except 语句 python

python - 如何知道我在 conda(和 pip)中安装了哪些软件包?

python - pandas >= 0.18 - 重新采样的更改,如何使用 groupby 进行上采样

c - UNIX:退出时等待进程子进程?

linux - 'collect2: ld returned 1 exit status '怎么解决?

php - 将 php 脚本作为守护进程运行