ปัญหาไคลเอนต์เทลเน็ต Android

ฉันใหม่ในการพัฒนาระบบปฏิบัติการ Android ฉันลองพัฒนาไคลเอ็นต์ 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();
        }
    }
}

person Dmitry Faddeev    schedule 01.03.2013    source แหล่งที่มา
comment
คุณสามารถพิมพ์ค่าไบต์ที่สร้างสัญลักษณ์แปลก ๆ และบอกเราว่ามันคืออะไร?   -  person Robᵩ    schedule 01.03.2013
comment
พิจารณาว่า คำถามนี้ช่วยให้กระจ่างเกี่ยวกับปัญหาของคุณหรือไม่   -  person Robᵩ    schedule 01.03.2013
comment
ขอบคุณ คุณพูดถูก telnet ไม่ใช่การเชื่อมต่อ tcp แบบธรรมดา   -  person Dmitry Faddeev    schedule 29.03.2013
comment
ในกรณีนั้น ให้ลองใช้ไลบรารีเทลเน็ตเช่น org.apache.commons.net.telnet.*   -  person Robᵩ    schedule 29.03.2013


คำตอบ (2)


สัญลักษณ์ "แปลก" เหล่านี้ ??????!???? หมายความว่าคุณใช้การเข้ารหัสผิด เมื่อคุณสร้าง InputStreamReader คุณควรระบุอย่างชัดเจนว่าสตรีมนี้ควรใช้การเข้ารหัสใด ฉันไม่รู้ว่าใช้การเข้ารหัสใดในบริการ telnet ของคุณ แต่คุณสามารถลองใช้การเข้ารหัสได้หลากหลาย เช่น windows-1252:

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

person Andremoniy    schedule 01.03.2013
comment
Andremoniy ขอบคุณมากสำหรับการตอบกลับของคุณ ฉันลองใช้ windows-1252 UTF-8 ASCII US-ASCII โดยไม่มีโชค - person Dmitry Faddeev; 01.03.2013

แอป Telnet ต้องใช้โปรโตคอล telnet สำหรับการเชื่อมต่อกับเซิร์ฟเวอร์ telnet มันไม่ใช่การเชื่อมต่อ tcp ธรรมดา ฉันใช้ไลบรารี apache commonse ซึ่งมีคลาสสำหรับการเข้าถึง telnet ขอบคุณ

person Dmitry Faddeev    schedule 29.03.2013