2012-06-02 18 views
10

Se un cliente ascolta su un socket allo http://socketplaceonnet.com, ad esempio, come fa a sapere che ci sono nuovi contenuti? Presumo che il server non possa inviare i dati direttamente al client, in quanto il client potrebbe trovarsi dietro un router, senza alcun port forwarding quindi non è possibile una connessione diret. Il cliet potrebbe essere un telefono cellulare che cambia il suo indirizzo ip quindi ho capito che per il client essere un ascoltatore, il server non ha bisogno di conoscere l'ip del clint.come funziona l'ascolto di una presa

Grazie

+1

Una breve [introduzione] (http://ssfnet.org/Exchange/tcp/tcpTutorialNotes.html) (correlata al protocollo TCP). – Vidul

+2

Il fatto che la connessione sia diretta o non modifica nulla. I byte (in pacchetti) arrivano sul tuo computer (potrebbe essere un buffer sulla tua scheda di rete) e di conseguenza viene inviato un segnale al tuo software. –

risposta

46

Un socket client non ascolta per le connessioni in entrata, si avvia una connessione in uscita al server. Il socket del server ascolta le connessioni in entrata.

Un server crea un socket, associa il socket a un indirizzo IP e un numero di porta (per TCP e UDP), quindi ascolta le connessioni in entrata. Quando un client si connette al server, viene creato un nuovo socket per la comunicazione con il client (solo TCP). Un meccanismo di polling viene utilizzato per determinare se si è verificata attività su una qualsiasi delle socket aperte.

Un client crea un socket e si connette a un indirizzo IP remoto e un numero di porta (per TCP e UDP). È possibile utilizzare un meccanismo di polling (select(), poll(), epoll(), ecc.) Per monitorare il socket per informazioni dal server senza bloccare il thread.

Nel caso in cui il client si trovi dietro un router che fornisce NAT (network address translation), il router riscrive l'indirizzo del client in modo che corrisponda all'indirizzo IP pubblico del router. Quando il server risponde, il router cambia l'indirizzo IP pubblico nell'indirizzo IP del client. Il router mantiene una tabella delle connessioni attive che sta traducendo in modo che possa mappare le risposte del server al client corretto.

+1

+1 eccellente e ben spiegato in meno di 14 righe :) –

+0

+1 Davvero è molto bella e breve e dolce spiegazione del meccanismo di polling del server durante la comunicazione. Grazie. –

Problemi correlati