- port = None
- while port is None:
- port = random.randint(20000, 40000)
- port_hex = ':%04x ' % port
- try:
- with open('/proc/net/tcp', 'r') as f:
- for line in f:
- if 0 <= string.find(line, port_hex):
- port = None
- break
- except OSError:
- # This isn't going so well. Just use the random port.
- pass
- except IOError:
- pass
+
+ sock = socket.socket()
+ sock.bind(('0.0.0.0', 0))
+ port = sock.getsockname()[1]
+ sock.close()