python - 如何在python中获取特定范围内的空闲端口

标签 python python-3.x port ubuntu-16.04

我可以使用python来获取空闲端口,但我想获取特定范围的空闲端口。

我尝试使用 while 循环来获取它,但我无法获取我想要的值,可能需要很长时间

import socket

SO_BINDTODEVICE=25

def get_free_port(iface=None):
    s = socket.socket()

    if iface:
        s.setsockopt(socket.SOL_SOCKET, SO_BINDTODEVICE, bytes(iface,'utf8'))

    s.bind(('',0))
    port = 0
    while(port<60100 or port>60300):
        ip = s.getsockname()[0]
        port = s.getsockname()[1]
    s.close()

    return ip,port


print(get_free_port())

希望能在短时间内得到我想要的端口

最佳答案

def next_free_port( port=1024, max_port=65535 ):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    while port <= max_port:
        try:
            sock.bind(('', port))
            sock.close()
            return port
        except OSError:
            port += 1
    raise IOError('no free ports')

关于python - 如何在python中获取特定范围内的空闲端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57086044/

相关文章:

python - 使用 Rundeckrun 创建作业?

python - 有没有人使用过语音驱动的动画,你能让它工作吗?

django - 在 Python 中使用 celery 调用类的实例方法

windows - Plesk 面板替换自签名证书

mysql - Docker 错误绑定(bind) : address already in use when port is not in use

python - 如何在 Django 应用程序中实现 Facebook 登录?

python click子命令统一错误处理

python - 在 Django 中创建可重复使用的模板

python-3.x - 对两个不同长度的字符串进行异或

apache - 使用Apache作为反向代理访问子域下的Plex