Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    passare byte al posto di una stringa

    Ciao,
    è possibile passare dei byte[] ad un buffer di scrittura che utilizza una comunicazione socket, invece di una stringa???

    ecco come eseguo la mia scrittura
    codice:
    OutputStream s1out = cliente.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s1out));
    bw.write(packet);  //packet è una stringa
    come faccio a fargli passare byte?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    String ha il metodo getBytes(). Dare un'occhiata alla Javadoc non sarebbe una brutta idea, eh...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    non si può avere un link?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    comunque non devo trasformare una stringa in byte, ma dire al socket che quello che deve mandare non sono stringhe, ma byte.

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    codice:
    OutputStream s1out = cliente.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s1out));
    bw.write(packet);  //packet è una stringa
    come faccio a fargli passare byte?

    comunque non devo trasformare una stringa in byte, ma dire al socket che quello che deve mandare non sono stringhe, ma byte.
    No, non ci siamo. L'OutputStream del socket tratta byte. Se "decori" lo stream con altri wrapper per avere un "Writer" generalmente dovrebbe essere perché vuoi scrivere solo "a caratteri" e basta. I Writer infatti trattano "caratteri" ... non byte.

    Se il formato del tuo "protocollo" di comunicazione è tale per cui devi mandare dati binari e anche stringhe, allora devi lavorare solo a livello di OutputStream (o sottoclassi) e ottenere da un String l'array di byte[] da inviare .... a patto ovviamente che il tuo "protocollo" permetta al destinatario di sapere "quanti" dati aspettarsi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    grazie della risposta, molto più chiara della prima

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    Ma non si può modificare solo il nome della classe buffer che utilizzo in modo che contenga anche i byte?

    Per esempio io uso: OutputStream s1out = cliente.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s1out));


    Posso mettere: OutputStream s1out = cliente.getOutputStream();
    Writer bw = new BufferedWriter(new OutputStreamWriter(s1out));

    Però questo non basta per modificare il tipo di byte che prende.
    Avete suggerimenti per fare in modo di avere cmq il buffer e poter mandare i byte al posto delle stringhe?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    Avete suggerimenti per fare in modo di avere cmq il buffer e poter mandare i byte al posto delle stringhe?
    BufferedOutputStream?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    Grazie.
    Ho scritto questo
    codice:
    OutputStream s1out = cliente.getOutputStream();
        BufferedOutputStream bw = new BufferedOutputStream(
         new OutputStreamWriter(s1out));
    Ma mi segna come errore dal new in poi.
    Che devo metterci?

    p.s. scusa l'ignoranza...

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    Ma mi segna come errore dal new in poi.
    Che devo metterci?
    No, non ci siamo. Vuoi scrivere orientato "a byte" invece che "a caratteri"? Allora devi solo usare classi a livello di OutputStream (o sottoclassi), non centra più nulla OutputStreamWriter!!!
    Vuoi la "bufferizzazione"? Allora BufferedOutputStream.

    codice:
    OutputStream s1out = cliente.getOutputStream();
    BufferedOutputStream bos = new BufferedOutputStream(s1out);
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.