Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    memorizzare stream in ingresso da socket

    ciao,
    Ho questa mia funzione:
    codice:
     BufferedInputStream br = new BufferedInputStream(s1in);
     InputStream s1in = cliente.getInputStream();
     br.read(pak);
    Adesso una volta che ho letto i dati tramite "br", come faccio a memorizzarli dentro una variabile per effettuarci delle operazioni?

    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    E il linguaggio nel titolo?
    E poi, sei sicuro di essere nell'area corretta?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    azz, no.
    Dovevo scendere su java

    Vabbe, chiudi che lo rimetto lì, o puoi spostare la discussione direttamente tu?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da Salinas
    azz, no.
    Dovevo scendere su java

    Vabbe, chiudi che lo rimetto lì, o puoi spostare la discussione direttamente tu?
    Se si sbaglia forum, basta segnalare la discussione al moderatore che provvede a spostarla.

    Ridirezionato su Java e corretto il titolo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: memorizzare stream in ingresso da socket

    Originariamente inviato da Salinas
    Ho questa mia funzione:
    codice:
     BufferedInputStream br = new BufferedInputStream(s1in);
    Adesso una volta che ho letto i dati tramite "br", come faccio a memorizzarli dentro una variabile per effettuarci delle operazioni?
    BufferedInputStream è comunque un InputStream ovvero "orientato" ai byte. Puoi leggere a 1 byte per volta o a blocchi di N byte per volta. Non vuol dire nulla di più.

    E quindi? Cosa vuoi fare? Non hai detto quali/quanti dati ricevi, non hai detto come vuoi trattarli, non hai detto quali sono queste "operazioni" che vuoi fare.
    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
    Questa è la funzione che prenderà i byte dal "br" e li manderà alla seriale.
    codice:
     class Send extends Thread{
    
      private byte[] pak;
    
      public Send(byte[] pak) {
            this.pak= pak;
    
    	}
      public void  run(){
    
    	try {
    	    reader.writePacket(pak);
    	}
    	catch (IOException e) {
    	    System.exit(2);
    	}
    	stampa(System.out, pak);
    	System.out.println();
    
            jTextArea2.setCaretPosition(jTextArea2.getText().length());// autoscroll
            jTextArea2.append("scrivo pacchetto"+(i-1)+": "+hexString(pak)+" \n");//stampa su schermo
      }
    
    }
    Ti incollo tutto il metodo del server, abbiamo già affrontato questo problema per mandare i byte al client, adesso dobbiamo anche riceverli dal client e mandarli tramite la funzione reder.writePacket(pak)
    codice:
     try
       {
        // Ricava lo stream di output associate al socket
        // e definisce una classe wrapper di tipo
        // BufferedWriter per semplificare le operazioni
        // di scrittura
        OutputStream s1out = cliente.getOutputStream();
        InputStream s1in = cliente.getInputStream();
        BufferedOutputStream bw = new BufferedOutputStream(s1out);
        BufferedInputStream br = new BufferedInputStream(s1in);
       // ByteArrayOutputStream bos = new ByteArrayOutputStream(new OutputStreamWriter(s1out));
        // Il server invia la risposta al client
        
        inattivo=false;
        bw.write(VERSION);
        while(!inattivo){
        if(available==false){  // gestione concorrente con la scrittura dei pacchetti
        //bw.write(hexString(packet)+"\n");
        if (packet.length > 255)
    	    throw new IOException("pacchetto troppo lungo\n");
        if (packet.length == 0)
    	    throw new IOException("pacchetto troppo corto\n");
        bw.write((byte)packet.length);
        bw.write(packet);
        bw.flush();
        br.read(pak);
        
        System.out.print(pak);
        available=true;  
          }
        }

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.