2011-08-05 2 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 바이트의 데이터를 읽습니다. 실제로는 데이터의 끝에 도달하지 않는 한 -1을 반환하지 않는 한 InputStream.read은 0-255 범위의 값만 반환하므로 여기서는 0xff & ... 부분이 필요하지 않습니다 (또는 실제로 나쁜 생각입니다).

+0

당신에게 존 감사 (. ... 보통 0xff & ... 다음은 입력int 인 부호 int 값으로 서명 byte 값을 변환하는 데 사용되며, 결과는 비록 byte 변수) :) –

관련 문제