Quote Originariamente inviata da AtoXx Visualizza il messaggio
Ciao a tutti, ho realizzato un client ed un server UDP in cui il client chiede al server di mandargli un determinato file. Invio datagrammi con parte dati di dimensione 1024byte. Tutto funziona con file piccoli, diciamo inferiori a 8KB, ma appena mando file di grandi dimensioni è come se il client non ricevesse tutti i pacchetti inviati dal server. Ho pensato che il problema possa essere che il server manda troppi pacchetti saturando il buffer di ricezione del client e conseguente perdita di pacchetti. Per questo ho messo tra l'invio di un pacchetto, da parte del server, e l'altro un delay di circa 35ms e così funziona ma a discapito del throughput. A qualcuno è mai capitata una cosa del genere?Mi sembra davvero strano come problema.
Appena ho un po' più di tempo potrei anche esaminare in dettaglio il tuo codice. A prima vista però ho la (netta) sensazione che fai parecchie cose e "giri" inutili (più alcune dubbie).

Anche ammesso di far "quadrare" e funzionare il tuo codice, un trasferimento di file in quel modo su UDP rimane poco più che un "giocattolo", giusto un esercizio per usare DatagramSocket. Infatti UDP è un protocollo "connectionless" ed ha di per sé una serie di fattori negativi:
- non c'è garanzia che un pacchetto arrivi a destinazione (e UDP non fornisce alcun acknowledge al mittente, di per sé).
- i pacchetti possono arrivare in un ordine diverso da quello con cui sono stati inviati.
- a seconda della tipologia/infrastruttura di rete più o meno complessa, i pacchetti possono anche arrivare duplicati N volte.