|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
[JAVA] SocketChannel ....perplessità
Ho qualche dubbio sulla .read della socketchannel (modalità bloccante); poniamo che eseguo a monte della connessione una write di 100Mb di dati da inviare presso l'altro endsystem a capo della connesione il quale effettua una read con disponibile un bytebuffer di 1Gb .....se effettua una sola read senza utilizzare un ciclo while viene effettuata tutta la lettura dei 100Mb oppure sono costretto anche qui ad utilizzare un ciclo while come nei vecchi socket?
grazie per l'eventuale interessamento ciao
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La documentazione è ambigua ma propenderei per il no, non devi usare il ciclo.
Secondo la documentazione: "if a channel is in blocking mode and there is at least one byte remaining in the buffer then this method will block until at least one byte is read. " Ma di quale buffer sta parlando? Una riga sopra "buffer" è l'input buffer del socket, poco prima "buffer" è il buffer usato per leggere i dati dal socket. Nel primo caso, non avresti la garanzia che usando un buffer di lettura d X byte read legga X byte. Nel secondo sì.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Messaggi: n/a
|
in base alla mia esperienza dico che è meglio usare un while, succedevano cose strane con un mio programma senza usare while(buffer.hasRemaining())
poi magari il mio caso non si applica a te, non ricordo bene cos'era e non ho più il sorgente. tanto alla fine se è bloccante è bloccante no? una riga in più ti da solo sicurezza |
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:14.



















