Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    [java] - Socket e BufferedOutputWriter

    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

  2. #2
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    up....

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    Immagino che ciò 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():
    codice:
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.