【发布时间】:2012-03-05 12:51:08
【问题描述】:
是否有某种系统调用会返回端口是否可用?或者至少是一种不会使您的流程成为坏公民的传统方式?
目前我是这样做的:
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
糟糕!
【问题讨论】:
-
您是否正在寻找确定一个端口在 Linux 中是否打开?还是你需要它在 Python 中?
-
总的来说,我只是使用 Python,因为它的套接字库接近金属。
-
解析netstat的输出呢?
-
考虑过了,但未使用的端口并不意味着用户有权绑定到该端口。
标签: python linux unix networking tcp