【问题标题】:Android telnet client issueAndroid telnet 客户端问题
【发布时间】:2013-02-15 20:36:34
【问题描述】:

我是 android 操作系统开发的新手。我尝试为 android OS 开发我的 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();
        }
    }
}

【问题讨论】:

  • 你能打印出产生奇怪符号的字节值并告诉我们它们是什么吗?
  • 考虑this question 是否能解决您的问题。
  • 谢谢,你是对的。 telnet 不是简单的 tcp 连接
  • 在这种情况下,请考虑使用像org.apache.commons.net.telnet.* 这样的telnet 库。

标签: java tcp telnet


【解决方案1】:

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

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

【讨论】:

  • Andremoniy 非常感谢您的回复。我尝试“windows-1252”“UTF-8”“ASCII”“US-ASCII”没有运气
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    相关资源
    最近更新 更多