Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - invio byte socket
Forum - Java - invio byte socket

Avatar
finanza (Normal User)
Rookie


Messaggi: 24
Iscritto: 08/01/2008

Segnala al moderatore
Postato alle 20:54
Mercoledì, 16/01/2008
Ciao, sto sviluppando un'applicazione client/server(o meglio una client e una server) per l'autenticazione di un client. Il problema è che non riesco a mandare array di byte dall'uno all'altro. O meglio, se utilizzo il socket per spedire solo byte funziona tutto, mentre se prima invio stringhe e poi cerco di mandare byte non ci riesco. In breve il codice ha due variabili esterne in e out che a un certo punto inizializzo:

.....
private BufferedReader in    = null;
private PrintWriter out      = null;
.....
in = new BufferedReader( new InputStreamReader                        (socket.getInputStream()));
out = new PrintWriter(new BufferedWriter                             (new utputStreamWriter(socket.getOutputStream())), true);
....
invio un po'di stringhe
....
public byte[] sendBytes()
{
   Random rand = new Random();
   byte b[] = new byte[4];
   rand.nextBytes(b);
   try{
       InputStream  i = socket.getInputStream();
       OutputStream o = socket.getOutputStream();
       System.out.println("sent");
       for(int x=0; x<4; x++)
            System.out.print(b[x]+".");            
       o.write(b);
       return b;
}
        catch(Exception e)....
Il client fa tutto come il server a parte
public byte[] receiveBytes()
{
try{
      InputStream  i = socketSSL.getInputStream();
     OutputStream o = socketSSL.getOutputStream();
      ByteArrayOutputStream output = new    ByteArrayOutputStream();
      int x=0;
      while((x=i.read())!=-1)
         output.write(x);      
      byte[]b=output.toByteArray();    
      System.out.println("received");
      for(x=0; x<4; x++)
         System.out.print(b[x]+".");          
      return b;
   }
catch(Exception e).....
Quello che succede è che il client si blocca al ciclo while: in pratica non gli arriva nulla! Se invece non inizializzo le variabili in e out il tutto funziona....perchè???

PM Quote