Masalah klien telnet Android

Saya baru dalam pengembangan di OS Android. Saya mencoba mengembangkan klien telnet saya untuk OS Android. Sekarang, saya hanya mencoba menghubungkan server telnet, dan menerima pesan login.

Tetapi ketika saya memulai soket untuk menghubungkan server telnet saya menerima simbol aneh ??????!???? alih-alih pesan logon dari server 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();
        }
    }
}

person Dmitry Faddeev    schedule 01.03.2013    source sumber
comment
Bisakah Anda mencetak nilai byte yang menghasilkan simbol aneh dan memberi tahu kami apa itu?   -  person Robᵩ    schedule 01.03.2013
comment
Pertimbangkan apakah pertanyaan ini dapat menjelaskan masalah Anda.   -  person Robᵩ    schedule 01.03.2013
comment
terima kasih, kamu benar. telnet bukanlah koneksi tcp sederhana   -  person Dmitry Faddeev    schedule 29.03.2013
comment
Dalam hal ini, pertimbangkan untuk menggunakan perpustakaan telnet seperti org.apache.commons.net.telnet.*.   -  person Robᵩ    schedule 29.03.2013


Jawaban (2)


Simbol "aneh" ini ??????!???? berarti Anda menggunakan pengkodean yang salah. Saat Anda membuat InputStreamReader Anda harus secara eksplisit menunjukkan pengkodean mana yang harus digunakan aliran ini. Saya tidak tahu pengkodean mana yang digunakan di dalam layanan telnet Anda, tetapi Anda dapat mencoba berbagai pengkodean, mis. windows-1252:

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

person Andremoniy    schedule 01.03.2013
comment
Andremoniy Terima kasih banyak atas balasan Anda. Saya mencoba windows-1252 UTF-8 ASCII US-ASCII tidak berhasil - person Dmitry Faddeev; 01.03.2013

Aplikasi Telnet memerlukan protokol telnet untuk koneksi ke server telnet. Ini bukan koneksi tcp sederhana. Saya menggunakan perpustakaan apache commonse yang menyediakan kelas untuk mengakses telnet. Terima kasih

person Dmitry Faddeev    schedule 29.03.2013