On localhost, how do I pick a free port number? On localhost, how do I pick a free port number? python python

On localhost, how do I pick a free port number?


Do not bind to a specific port. Instead, bind to port 0:

sock.bind(('', 0))

The OS will then pick an available port for you. You can get the port that was chosen using sock.getsockname()[1], and pass it on to the slaves so that they can connect back.

sock is the socket that you created, returned by socket.socket.


For the sake of snippet of what the guys have explained above:

import socketfrom contextlib import closingdef find_free_port():    with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:        s.bind(('', 0))        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)        return s.getsockname()[1]


Bind the socket to port 0. A random free port from 1024 to 65535 will be selected. You may retrieve the selected port with getsockname() right after bind().