Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import errno
- import contextlib
- reserved_ports = set()
- def get_open_port(lowest_port = 0, highest_port = None, bind_address = '', *socket_args, **socket_kwargs):
- if highest_port is None:
- highest_port = lowest_port + 100
- while lowest_port < highest_port:
- if lowest_port not in reserved_ports:
- try:
- with contextlib.closing(socket.socket(*socket_args, **socket_kwargs)) as my_socket:
- my_socket.bind((bind_address, lowest_port))
- this_port = my_socket.getsockname()[1]
- reserved_ports.add(this_port)
- return this_port
- except socket.error as error:
- if not error.errno == errno.EADDRINUSE:
- raise
- assert not lowest_port == 0
- reserved_ports.add(lowest_port)
- lowest_port += 1
- raise Exception('Could not find open port')
Advertisement
Add Comment
Please, Sign In to add comment