PDA

Visualizza la versione completa : [java] - Socket e BufferedOutputWriter


citrus
27-12-2004, 15:42
ciao a tutti...
ho creato un'applicazione client-server per lo scambio di messaggi (giusto per provare ad usare le socket).
ho notato che il messaggio non viene inviato se uso la classe BufferedOutputWriter!
(invece con la DataOutputStream si)...
qualcuno me ne sa spiegare il motivo? (io proprio non capisco)...

grazie mille!
citruz
:)

citrus
30-12-2004, 13:30
up....

LeleFT
30-12-2004, 13:42
Immagino che cị sia dovuto al fatto che stai, appunto, usando una classe che utilizza l'I/O bufferizzato (come dice il nome stesso della classe). Questo significa che i dati vengono messi in output solamente quando il buffer interno è pieno. Se il messaggio non riempie completamente il buffer, quindi, esso non viene messo in output, ma si attende l'arrivo di altri dati in modo da accumulare una quantità sufficientemente grande da poter essere messa in output. Per forzare l'invio dei dati, anche se sono di quantità inferiore al buffer, dovrebbe essere previsto il metodo flush():


BufferedOutputWriter bow = new BufferedOutputWriter(...);
bow.write(...);
bow.flush();

Il codice l'ho scritto a grandi linee dato che non ho trovato da nessuna parte una classe con questo nome.


Ciao. :ciauz:

Ed_Bunker
30-12-2004, 14:28
Come ti ha gia' suggerito LeleFT e' sufficiente che tu faccia una flush dopo la write con la quale hai inviato i dati. Questo ti permette di "svuotare" il buffer solo parzialmente riempito di byte.

Loading