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.
fonte
2012-06-02 10:43:14
Una breve [introduzione] (http://ssfnet.org/Exchange/tcp/tcpTutorialNotes.html) (correlata al protocollo TCP). – Vidul
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. –