Newsgroup: it.comp.programmare.win32
Titolo: Socket: TCP o UDP?

Finalmente ho trovato un'applicazione che utilizza i datagram invece
che i packet su connessione stabile.
Si tratta di ICQ, tutti i pacchetti spediti al server sono UDP e il
motivo penso di averlo intuito: per il server della mirabilis cosě č
meno pesante che mantenere milioni di connessioni con le persone
collegate.
Quali sono i criteri generali grazie ai quali si sceglie una
trasmissione mediante UDP piuttosto che una TCP?
]\/[ad]\/[age
"Da grande creerň mondi in cui le persone, giocando, vivranno le vite che hanno sempre sognato di vivere" (MadMage)
(
www.madmagelab.cjb.net
)

trasmissione mediante UDP piuttosto che una TCP?
appunto come hai detto tu......
mantenere migliaia se non milioni di connessioni richiede
una quantità enorme di memoria, e potenze di calcolo
non indifferenti.
considera che per ogni connessione via tcp di solito si
cerca di creare un thread che la gestisce, o altrimenti
bisognerebbe controllare tutti i canali di comunicazione
per vedere chi ha inviato dati o chi no.....
di norma viene scelta UDP quando non é importante
che i dati arrivino a destinazione, si sceglie per pacchetti
di traffico piccolo, x brevi scambi di messaggi, nel peggior
dei casi si ritrasmette
cod

 trasmissione mediante UDP piuttosto che una TCP?
A differenza di TCP, con UDP non hai la certezza che i pacchetti arrivino
nel giusto ordine. Quindi ad esempio fare un file transfer via UDP e`
stupido, perche` dovresti inserire direttamente nei dati trasmessi delle
informazioni su come essi devono essere riassemblati. Di fatto torneresti a
inventare la ruota, ossia a fare quello che ti fa lo stack TCP direttamente
a livello di sistema.
Se invece devi soltanto spedire notifiche o messaggi "indipendenti" fra
loro, UDP e` superiore, perche` permette di sfruttare meglio la banda a
disposizione (dovendo trasportare meno dati di controllo ed essendo un
protocollo di tipo "first come, first serve").
---
Bye! Lorenzo Lutti
http://antani.virtualave.net/

Si tratta di ICQ, tutti i pacchetti spediti al server sono UDP
Allora e' un programma fatto male. I casi sono due:
1) hanno reinventato la ruota, e gestiscono loro le perdite dei
pacchetti, e l'arrivo non in ordine dei pacchetti.
2) non hanno gestito la cosa, e si possono perdere le "parole" per
strada.
3) UDP e' usato solo per pacchetti di controllo/comandi.
UDP ha senso (per esempio) per trasmettere la voce. La perdita di
pacchetti non necessariamente rende non intellegibile una
comunicazione. Che poi VoiceOverIP funzioni in modo diverso e' altra
questione.
-- 
Tieni per te il Papero se vuoi la mia email
Non usi la Papero Template Library? Male.
Sito Papero -> 
http://utenti.tripod.it/papero

>>>>> "LL" == Lorenzo Lutti <lorenz...@DOHtiscalinet.it> writes:
LL> Quindi ad esempio fare un file transfer via UDP e`
LL> stupido, perche` dovresti inserire direttamente nei dati trasmessi delle
LL> informazioni su come essi devono essere riassemblati. Di fatto torneresti a
LL> inventare la ruota, ossia a fare quello che ti fa lo stack TCP direttamente
LL> a livello di sistema.
Ciň non toglie che non č cosě stupido come sembra. Ci sono casi in cui un
file transfer connectionless č utile... ;)
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

 writes:
DQ> On Thu, 03 May 2001 19:38:35 GMT, 
mad...@madmagelab.net
 (MadMage)
DQ> wrote:
DQ> 3) UDP e' usato solo per pacchetti di controllo/comandi.
Hmmm, credo che NFS giri su  UDP. Usualmente UDP lo usi per protocolli
semplici o che  stanno su rete locale. Ad esempio  il talk di Berkeley
fa passare la  conversazione (testo) su UDP, molto  più leggero per la
macchina...
DQ> UDP ha senso (per esempio) per trasmettere la voce.
Trasmettere la voce su IP ha senso :>....


fa passare la  conversazione (testo) su UDP
Talk e' un programma concettualmente diverso dagli attuali cloni di
ICQ. Un conto e' sparare un carattere alla volta su una rete locale,
dove tra l'altro poco importa se perdi un carattere. Un conto e'
chiedere ad un server se l'utente Caio e' connesso, e di darti un ACK
quando si connette Sempronio.
-- 
Tieni per te il Papero se vuoi la mia email
Sito Papero -> 
http://utenti.tripod.it/papero
Link al Sito Papero 
http://www.mathtools.net/

> fa passare la  conversazione (testo) su UDP
DQ> Talk e' un programma concettualmente diverso dagli attuali cloni di
DQ> ICQ. Un conto e' sparare un carattere alla volta su una rete locale,
Locale, oddio... Le macchine di Berkeley o UNC non erano proprio sulla
LAN dei DEI :), e credo che mandi i caratteri a gruppi. E tra l'altro 
fa anche (un breve) uso di TCP se non ricordo male. 


LAN dei DEI :), 
Malgrado a Berkleay avevano e hanno tutt'ora un ottimo gruppo di
lavoro sulle reti, ritengo che Talk rimanga un giocattolo da NON
prendere come esempio se non per fare giocattoli.
Erano altri tempi. Erano possibili altri tipi di soluzioni.


> LAN dei DEI :), 
DQ> Malgrado a Berkleay avevano e hanno tutt'ora un ottimo gruppo di
DQ> lavoro sulle reti, ritengo che Talk rimanga un giocattolo da NON
DQ> prendere come esempio se non per fare giocattoli.
Sono d'accordo sulla frase, ma probabilmente per motivi diversi :)
