2013-03-01 3 views
0

나는 안드로이드 OS로 개발 중이다. 안드로이드 OS 용 텔넷 클라이언트를 개발하려고합니다. 이제 텔넷 서버에 연결하고 로그인 메시지 만 수신하려고 시도합니다.안드로이드 텔넷 클라이언트 문제

하지만 텔넷 서버에 연결하기 위해 소켓을 시작하면 텔넷 서버의 로그온 메시지 대신 ??????!????이라는 이상한 기호가 나타납니다.

public class MainActivity extends Activity { 
    protected static final int TCP_SERVER_PORT = 23; 
    protected String inMsg, str; 
    static Editable sentence; 
    static String modifedSentence; 
    BufferedReader inFromUser; 
    Socket clientSocket = null; 
    DataOutputStream outToServer=null; 
    BufferedReader inFromServer=null;   

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button startButton = (Button)findViewById(R.id.startButton); 
     final TextView textView = (TextView)findViewById(R.id.textView); 

     startButton.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 
       new Thread(new Runnable() {     

        @Override 
        public void run() {    

     //Create socket 
     try { 
     clientSocket = new Socket("192.168.1.1",23); 
     //Create out stream for ClientSocket 
      outToServer = new DataOutputStream(clientSocket.getOutputStream()); 
     //Create ib stream for ClientSocket   
     inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
     //Receive login message from telnet server 
      modifedSentence = inFromServer.readLine(); 
     } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
       //Update UI activity with login message 
     MainActivity.this.runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
          textView.setText(modifedSentence); 
        } 
       }); 
     } 
      }).start(); 
    } 
     });   
    } 

    protected void onDestroy() 
    { 
     try { 
      clientSocket.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

이상한 기호를 생성하는 바이트 값을 인쇄하여 알려주십시오. –

+0

[이 질문] (http://stackoverflow.com/questions/10413963/telnet-iac-command-answering/10418479#10418479)이 문제를 밝히는 경우를 고려하십시오. –

+0

감사합니다. 당신 말이 맞습니다. 텔넷은 간단한 tcp 연결이 아닙니다. –

답변

0

이 "이상한"문자 ??????!???? 평균, 당신이 잘못 인코딩을 사용하는 것이. InputStreamReader을 만들 때이 스트림에서 사용할 인코딩을 명시해야합니다. telnet 서비스에서 어떤 인코딩이 사용되는지는 알 수 없지만 다양한 인코딩을 시도해 볼 수 있습니다. windows-1252 :

new InputStreamReader(clientSocket.getInputStream(), Charset.forName("windows-1252"))

+0

Andremoniy 답장을 보내 주셔서 감사합니다. 나는 "windows-1252" "UTF-8" "ASCII" "US-ASCII"행운을 시험해 본다. –

0

텔넷 응용 프로그램 텔넷 서버에 연결 텔넷 프로토콜을 필요로한다. 이것은 간단한 tcp 연결이 아닙니다. 텔넷 액세스를위한 클래스를 제공하는 apache commonse 라이브러리를 사용합니다. 감사합니다.

관련 문제