code: def bind_tcp_socket(address):
      
      host, port = address
      for res in set(socket.getaddrinfo(host, port, socket.AF_INET,
                                        socket.SOCK_STREAM, 0,
                                        socket.AI_PASSIVE)):
  
          family, socktype, proto, _, sock_addr = res
          sock = socket.socket(family, socktype, proto)
          if os.name != 'nt':
              sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  
          # Automatic port allocation with port=None.
          sock.bind(sock_addr)
          sock.listen(128)
          bound_port = sock.getsockname()[1]
          return sock, (host, bound_port)
  
      raise socket.error('could not bind socket')
docs: Takes (host, port) and returns (socket_object, (host, port)).
  
      If the passed-in port is None, bind an unused port and return it.