2011-08-05 23 views
0

私はこのようなコードを持っている:Socket.getInputStream()。read()メソッドはjavaで何をしますか?

class ConnectionHandler implements Runnable { 

private Socket socket; 
private InputStream is; 
private OutputStream os; 
private Packetizer packetizer; 
boolean closed = true; 

public ConnectionHandler(Socket socket, ProtocolHandler ph) { 
    this.socket = socket; 
    try { 
     is = socket.getInputStream(); 
     os = socket.getOutputStream(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
Thread t = new Thread(this); 
    t.start(); 
    //log.debug("ConnectionHandler const done"); 
} 

public void run() { 
    try 
    { 
     // 
     // Read a message sent by client application 
     // 

     closed = false; 
     while (!closed) 
     { 
      if (is.available() > 0) 
      { 
       byte c = (byte) (0xff & is.read()); 
       //log.debug("r " + c); 

      } else { 
       try { 
        Thread.sleep(100); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        //e.printStackTrace(); 
       } 
      } 
     } 

     is.close(); 
     os.close(); 
     socket.close(); 

    } catch (IOException e) { 
    } 
} 

私の質問はこれを使用することが何であるかである - >バイトc =(バイト)()(& is.read 0xFF)を、

あなたの考えを教えてください。

私を助けてください。前もって感謝します。

答えて

4

ソケットから1バイトのデータを読み込みます。 0xff & ...の部分は、実際には-1を返すデータの終わりに実際に達していない限り、InputStream.readは0-255の範囲の値しか返さないため、ここでは(または実際は悪い考えです)不要です。

+0

はあなたにジョンをありがとう(。...通常0xff & ...はここ入力intある符号なしのint値に署名しbyte値を変換するために使用され、結果がはしかしbyte変数です): ) –

関連する問題