0

私はAndroid OSでの開発が初めてです。Android OS用のtelnetクライアントを開発してみました。今、私は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();
        }
    }
}
4

2 に答える 2

0

Telnet アプリでは、Telnet サーバーへの接続に Telnet プロトコルが必要です。これは単純な tcp 接続ではありません。telnet アクセス用のクラスを提供する apache commonse ライブラリを使用します。ありがとう

于 2013-03-29T11:34:40.657 に答える
0

これらの「奇妙な」記号??????!????は、間違ったエンコーディングを使用していることを意味します。作成するときはInputStreamReader、このストリームが使用するエンコーディングを明示的に指定する必要があります。サービス内でどのエンコーディングが使用されているかわかりませんtelnetが、さまざまなエンコーディングを試すことができますwindows-1252

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

于 2013-03-01T11:07:50.050 に答える