2013-08-28 4 views
0

Socket을 수신하기 위해이 InputStream 리더를 작성했습니다. 이 코드는 run 스레드 내부의 while(!stop) 루프에 있습니다. 이 판독기는 스레드를 차단하고 메시지를 인쇄하지 않습니다.InputStream 리더 차단 스레드

int read = 0; 
byte[] buf = new byte[512]; 
int index = 0; 
try { 
    while (!stop && (read = in.read()) != -1) { 
     System.out.println("read loop"); 
     buf[index++] = (byte) read; 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

클라이언트/서버가 글쓰기를 중지합니까? 스트림 측면을 플러시하거나 닫습니까? –

+0

'Socket'에 의해 제공되는'InputStream'이 블로킹하고 있습니다. 예상 된 동작입니다. 아니면 513 바이트를 보내고 ArrayIndexOutOfBoundsException을 얻을 수 있습니다. – chrylis

답변