我如何在Linux中find一个开放的端口?

是否有某种系统调用会返回端口是否可用? 或者至less有一个传统的做法,不会使你的过程成为一个坏公民?

目前这是我如何做到这一点:

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 

呸!

Solutions Collecting From Web of "我如何在Linux中find一个开放的端口?"

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

但是,如果您只需要任何打开的端口,则可以绑定到端口0,操作系统将为您分配一个端口。