2013-03-01 181 views
0

我是在android操作系统开发新手。我尝试开发我的android操作系统的telnet客户端。 现在,我只尝试连接telnet服务器,并接收登录消息。Android telnet客户端问题

但是,当我启动套接字连接telnet服务器我收到奇怪的符号??????!????而不是来自telnet服务器的登录消息。

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

你能打印产生奇怪符号的字节值并告诉我们它们是什么吗? – 2013-03-01 18:39:48

+0

考虑如果[这个问题](http://stackoverflow.com/questions/10413963/telnet-iac-command-answering/10418479#10418479)揭示了你的问题。 – 2013-03-01 18:41:08

+0

谢谢,你是对的。 telnet不是一个简单的tcp连接 – 2013-03-29 12:03:45

回答

0

这些“奇怪”的符号??????!????的意思是,你使用错误的编码。当您创建InputStreamReader时,您应明确指出此流应使用哪种编码。我不知道您的telnet服务中使用了哪种编码,但您可以尝试各种编码,例如windows-1252

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

+0

Andremoniy非常感谢您的答复。我尝试“windows-1252”“UTF-8”“ASCII”“US-ASCII”没有运气 – 2013-03-01 12:00:58

0

的Telnet应用需要用于向远程登录服务器的连接telnet协议。这不是一个简单的tcp连接。我使用apache commonse库为telnet访问提供类。 谢谢