PDA

Visualizza la versione completa : [C] sistema client-server


KITT
09-06-2008, 11:09
ciao a tutti,
in un sistema client-server, concorrente, il server deve avere tanti socket quanti sono i client?

oregon
09-06-2008, 11:14
Il server accetta le connessioni sulla porta su cui ascolta. Quindi non capisco la tua domanda ...

mondobimbi
09-06-2008, 11:44
quando c' una richesta dal client il server dovr creare un nuovo socket per gestire la comunicazione. In che modo dipende dalla implementazione.
ciao
sergio

oregon
09-06-2008, 11:54
Pero' tieni presente che i socket creati dal server utilizzano la stessa porta e IP.

Qual e' il problema?

gp.maraldo
11-06-2008, 21:03
No! non usano la stessa porta.
Il server in ascolto sulla porta specificata, poi quando
un client fa una richiesta di connessione, il server crea
un nuovo socket su un'altra porta libera. Altrimenti, come
potrebbero dialogare tutti sulla stessa porta?

oregon
11-06-2008, 21:06
No ... il server non utilizza un'altra porta ... altrimenti come potrebbe dialogare il client su una porta che non conosce e su cui non si e' collegato? Il server utilizza un altro socket non un'altra porta ...

gp.maraldo
11-06-2008, 21:12
Appunto, per creare un altro socket usa un altra porta, che, durante
l'handshaking lo notifica anche al client. Quindi per ogni client, c' un
nuovo socket ed una nuova porta!

mondobimbi
11-06-2008, 21:24
normalmente non c' ragione di cambiare la porta, specialmente se questa una porta alta.
ciao
sergio

oregon
11-06-2008, 21:29
E' il client che utilizza una porta diversa per ogni connessione. Il server no. Il server utilizza la stessa porta.

Un socket in stato "established" e' una astrazione software e corrisponde ad una quintupla costituita dal protocollo usato (TCP), indirizzo e porta sorgente, indirizzo e porta destinazione.

Quello che varia, ad ogni connessione, e' la porta sorgente.

Nessuno scambio di "porte" viene effettuato durante l'handshaking ... dove lo hai letto?

gp.maraldo
11-06-2008, 21:31
Non bisogna cambiare la porta, quella di ascolto rimane la stessa, ma
quando un server crea un nuovo socket deve aprire un altra porta, per
distingueri i flussi dati.

Per chi non si fida, ci vuole poco a controllare. Create un server e vedete le porte
utilizzate, quando poi si collegano dei client, si apriranno 'magicamente', delle nuove
porte (a questo ci pensa il server a livello basso automaticamente, non se ne occupa
il programmatore che usa le chiamate ai socket gi belle e pronte dalle librerie usate)

Loading