Domanda

Non vedo http://docs.python.org/library/socketserver.html per cercare di gestire le richieste asincrone con il SocketServer in pitone. In fondo v'è un esempio, ma non ha senso. Si dice si utilizza la porta 0 che assegna una porta non utilizzata arbitraria. Ma come fai a sapere che cosa porta da utilizzare per il cliente se non sono nello stesso programma? Io non capisco come fare questo utile.

È stato utile?

Soluzione

Poiché il client è implementato nello stesso script del server, la porta è noto. In uno scenario del mondo reale, è necessario specificare una porta per il demone. Oltre a lasciare i vostri clienti sapere su quale porta per la connessione, si può anche bisogno di sapere in modo da poter aprire i firewall tra i client e il server.

Altri suggerimenti

In questo esempio si è collegato, sono il recupero del porto:

# Port 0 means to select an arbitrary unused port
HOST, PORT = "localhost", 0

server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address

Tuttavia, si dovrebbe davvero essere guardando www.twistedmatrix.com se si è sul serio scrivendo gestione asincrona:)

È necessario recuperare la porta che è stata assegnata al socketserver una volta che il bind è fatto: in questo caso, questo sarà probabilmente attraverso ip, port = server.server_address

.

Il porto arbitraria è solo se si desidera creare un server senza specificare una porta:. Il sistema operativo assegna una porta disponibile

Naturalmente ci deve essere anche un modo per specificare quale porta da associare.

server = ThreadedTCPServer((HOST, 0), ThreadedTCPRequestHandler)
ip, port = server.server_address

...

client(ip, port, "Hello World 1")

Il valore PORT 0 dice: "Non mi importa quello che il numero di porta è", così il valore port del indirizzo_server viene assegnato dalla chiamata ThreadedTCPServer (). E non è zero. In seguito, si passa quel valore port al cliente, che lo utilizza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top