|
|
|
|
Strumenti |
23-12-2011, 12:09 | #21 | |
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
Quote:
Ogni send (almeno in linea di principio) diventa un pacchetto del flusso TCP o, nel caso la quantità di dati sia troppo grande per un singolo pacchetto, viene frammentata in N pacchetti che poi il ricevitore ricompone. Per massimizzare l'efficienza dovresti fare pacchetti più grande possibile in modo da minimizzare il numero di pacchetti e, di conseguenza, l'overhead dovuto agli header TCP, IP, ecc che devi aggiungere ad ogni pacchetto. D'altro canto, se fai pacchetti grandi, se se ne perde uno e TCP deve ritrasmetterlo, ritrasmetterà una quantità di dati maggiore. Insomma, è un compromesso: per grosse quantità di dati, io farei pacchetti grossi (non meno di 512-1024 byte alla volta) |
|
23-12-2011, 12:14 | #22 | |
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
Quote:
|
|
23-12-2011, 14:06 | #23 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Tu non sai se e quando il server abbia fatto delle recv. Se la tua send ritorna con successo sai che in linea di massima i dati sono arrivati all'altro capo, ma potrebbero essere fermi in qualche buffer. Se vuoi avere qualche garanzia (tipo che il server ha finito di salvare i dati su disco) devi far si che il server risponda con qualche comando di conferma. Di cosa vuoi aver conferma ?
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
23-12-2011, 15:46 | #24 | |||
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
Quote:
mmm non mi pare di usare variabili globali nel mio caso... Quote:
Quote:
Ma a quanto mi hanno detto queste conferme non sono necessarie. O sbaglio? |
|||
23-12-2011, 21:09 | #25 |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Allora la conferma non serve per quel che riguarda la trasmissione in se'. Immagino pero' ti servira almeno una conferma che tutta la transazione e' andata a buon fine (e se finisce il disco? Se non puoi creare il file ? Se c'e' qualcosa che non va nei dati che hai spedito ?)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
23-12-2011, 21:25 | #26 |
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
Difficile dare un numero preciso, dipende dal contesto. Se ti interessano le prestazioni potresti voler ottimizzare anche l'invio di 1000 byte così come di 10 MB, non è che ci sia un numero preciso, sono scelte di progetto...
Per quanto riguarda le conferme NO, non sono necessarie nel senso che i dati arrivano sicuramente. Però, come giustamente facevano notare, il fatto che i dati arrivino non significa che tutto andrà bene: disco pieno, ram finita, ecc... Per risolvere questo problema ci vuole qualcosa di più complesso, tipo una connessione di controllo separata (come il protocollo FTP) per segnalare eventuali problemi da server a client e viceversa. Però in questo caso ti servono più thread... Non mi viene in mente niente di semplicissimo da implementare, pensaci su! |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:53.