2012-11-19 2 views
1

자바에서 소켓을 사용하여 간단한 텔넷 클라이언트를 만들려고합니다. 여기에 내가 쓴 것입니다 : 버퍼 판독기에서 읽으려고 할 때텔넷 연결에서 데이터를 읽을 수 없습니다.

public class NetUtil { 
    public static void main(String[] args) throws IOException { 
     Socket sock = new Socket("localhost", 23); 
     InputStream in = sock.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

     String output; 
     while((output=br.readLine())!=null){ 
      System.out.println(output); 
     } 
    } 
} 

문제는 그 출력이 정지됩니다. sock.isConnected() - 연결되어 있는지 확인했습니다. 내 텔넷 서버가 작동 중입니다. 콘솔에서 확인했습니다. 워크 스테이션에 연결할 수 있지만 소켓을 사용하려고하면 실패합니다.

+0

소켓에서 읽으려고하기 전에 텔넷 핸드 셰이크를해야한다고 생각합니다. Telnet은 초기 프로토콜처럼 사소한 프로토콜이 아닙니다. 편집 : 이전의 코멘트를 신경 쓰지 마시오 –

+0

나는 그것을 얻지 못한다고 생각합니다 - 당신이 그것을 읽기 전에 소켓에 ​​사용자 이름/암호를 쓰려고한다는 것을 의미합니까? – user1836132

+0

클라이언트 터미널 (인코딩, 에코 상태 등)에 대한 서버 정보를 제공해야합니다. 독자적으로 구현하려는 경우 RFC를 공부하십시오 (http://en.wikipedia.org/wiki/Telnet) –

답변

0

서버가 뭔가를 보내고 있습니까? 줄 바꿈 문자도 보내겠습니까? 귀하의 프로그램은 readLineBufferedReader으로 호출하여 기대하고 있습니다.

+0

네, 런타임을 사용하여 동일한 일을 시도했다 - 그리고 나는 모든 출력, 나는 기대했다 ... 최근에 내가 입력 된 스트림을 'in'- 어떤 데이터가 포함되어 있지만 char로 변환하는 것은 실패합니다. – user1836132

+0

예외가 표시됩니까? '실패'란 무엇을 의미합니까? –

+0

예외 없음 - 방금 다음과 같이 출력을 인쇄하려고했습니다 : some_int = in.read(); System.out.print ((char) some_int); – user1836132

1

나는 당신이 바퀴를 여기에서 재발견해야한다고 생각하지 않는다. Apache Commons Net 텔넷 클라이언트를 사용해보십시오.

+0

글쎄, 내가 가장 쉬운 방법 일거야,하지만 나는 무엇이 잘못되었는지 궁금해. :) - 나는 그런 문제에 대한 어떤 이유라도 볼 수 없다. – user1836132

관련 문제