ciao a tutti,
in un sistema client-server, concorrente, il server deve avere tanti socket quanti sono i client?
ciao a tutti,
in un sistema client-server, concorrente, il server deve avere tanti socket quanti sono i client?
Il server accetta le connessioni sulla porta su cui ascolta. Quindi non capisco la tua domanda ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
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
Pero' tieni presente che i socket creati dal server utilizzano la stessa porta e IP.
Qual e' il problema?
No MP tecnici (non rispondo nemmeno!), usa il forum.
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?
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 ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
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!
normalmente non c'è ragione di cambiare la porta, specialmente se questa è una porta alta.
ciao
sergio
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?
No MP tecnici (non rispondo nemmeno!), usa il forum.
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)