【问题标题】:How do I get free ports in the specific range in python如何在python中获得特定范围内的免费端口
【发布时间】:2019-11-26 21:20:32
【问题描述】:

我可以使用 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())

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

【问题讨论】:

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


    【解决方案1】:
    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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2014-04-07
      • 2017-10-16
      相关资源
      最近更新 更多