2013-12-17 3 views
0

Java에서 데이터 스트림을 읽는 방법을 알려주세요. 내 요구 사항은 라우터에 텔넷 연결을 만드는 것입니다. 이 부분은 완성되었습니다. 라우터에서 텔넷을 통해 IP 주소와 포트 번호를 사용하여 xxx 원격 시스템에 연결해야합니다. 이 연결을 만드는 동안 나는 약간의 반응을 얻고있다. 그러나 읽는 동안 프로그램 컨트롤은 InputStream 클래스의 read() 메서드에서 중단됩니다. 다음은 데이터 스트림을 읽는 데 사용하는 코드 스 니펫입니다. 무슨 일이 일어나고 무엇데이터 스트림에서 데이터를 읽는 방법

 buff = new byte[4*1024]; 
     ret_read = 0; 

     do 
     { 
      ret_read = in.read(buff); // Program control gets hanged here. Once all the data are read... 
      if(ret_read > 0) 
      { 
       System.out.println(new String(buff,0,ret_read)); 

      } 
     }while(ret_read > 0); 

답변

1

는 읽기, 그것은 스트림이 닫히거나 할 때까지 더 많은 데이터를 전송 그렇게 계속 차단하고 스트림에 전송하기 위해 더 많은 정보를 기다리고 있습니다.

비 차단 읽기를 사용하거나 읽기 시간 초과를 설정하거나 데이터 전송이 완료된 후 스트림 서버 측을 닫아야합니다.

+0

더 많은 데이터를 읽을 때까지 기다리는 중입니다. 그러나 스트림에는 데이터가 없습니다. 그래서 read() 메소드에서 나오는 법. –

+0

available()을 사용하여 읽기 전에 무엇이 있는지 알아 보거나 소켓 채널과 같은 비 차단 연결을 사용할 수 있습니다. http://docs.oracle.com/javase/6/docs/api/java /nio/channels/SocketChannel.html –

+0

감사합니다. Tim. 그러나 InputStream 클래스의 available() 메서드는 항상 0을 반환합니다. 그래서 난 비 차단 연결을 시도 할 것입니다() –

관련 문제