Android telnet客户端通过apache commons

时间:2016-01-16 10:37:41

标签: java android telnet

我对Android很新,我想为我的Android编写一个telnet客户端应用程序。我已经使用Apache commons库为telnet编写了代码。现在我能够连接到telnet服务器(因为我已经使用了Asyctask概念)并且能够在很长一段时间后读取登录横幅我不知道是什么原因造成的。我修改了Apache commons中给出的示例以使用我的android代码。我的“src”文件夹中有两个java代码(MainActivity.java和TelnetClientExample.java)。首先,我想获得登录提示,然后我希望用户与它进行交互请帮助,在此先感谢:) 我发布了我正在获取的屏幕截图。

MainActivity.java

package com.example.telnetapp;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.PrintWriter;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity{
    public static int port_int_address;
    private EditText server,port;
    private Button connect;
    public static String ip,port_address;
    public PrintWriter out;
    public static TextView textResponse;
    static String response;
    public InputStream instr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        server = (EditText)findViewById(R.id.edittext1);
        port = (EditText)findViewById(R.id.edittext2);
        connect = (Button)findViewById(R.id.connect);
        textResponse = (TextView)findViewById(R.id.response);
        connect.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                ip = server.getText().toString();
                port_address = port.getText().toString();
                port_int_address = Integer.parseInt(port_address);
                try{
                    MyClientTask task = new MyClientTask(ip, port_int_address);
                    task.execute();
                }
                catch(Exception e){Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();}
              }
         });
    } 

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public class MyClientTask extends AsyncTask<Void, Void, Void> {
          String dstAddress;
          int dstPort;
          TelnetClientExample job;
          MyClientTask(String inetAddress, int port){
           dstAddress = inetAddress;
           dstPort = port;
          }
          @Override
          protected Void doInBackground(Void... arg0) {
           try {
               job = new TelnetClientExample();
               job.backgroundjob();
            }
           catch (Exception e)
            {
               Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
            }
            return null;
          }

          @Override
          protected void onPostExecute(Void result) {
               try {
                 instr = TelnetClientExample.tc.getInputStream();
                 byte[] buff = new byte[1024];
                 int ret_read = 0;
                 do
                 {
                  ret_read = instr.read(buff);
                  if(ret_read > 0)
                   {
                      MainActivity.response += new String(buff, 0, ret_read);
                   }
                 }
                 while (ret_read >= 0);
                }
                 catch (Exception e) {
                    MainActivity.response += e.toString();
                    MainActivity.response += "From reading from telnet server ! \n";
                  }
                textResponse.setText(response);
                super.onPostExecute(result);
             }

    }
}

TelnetClientExample.java

package com.example.telnetapp;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.net.telnet.TelnetClient;
public class TelnetClientExample {
    public String remoteip = MainActivity.ip;
    public int remoteport= MainActivity.port_int_address;
    public static TelnetClient tc = null;
    public  void backgroundjob() throws IOException {

        tc = new TelnetClient();
            try {
                tc.connect(remoteip, remoteport);
                }
            catch (Exception e) {
            }
    }

    public void close_con(){
        try {
            tc.disconnect();
        }
        catch (Exception e) {
            MainActivity.response += e.toString();
            MainActivity.response += "From reading from disconnecting telnet server ! \n";
        }
    }
}




The problem is in this code snippet . please look into this and help me to get an interactive session.



    protected void onPostExecute(Void result) {
       try {
         instr = TelnetClientExample.tc.getInputStream();
         byte[] buff = new byte[1024];
         int ret_read = 0;
         do
         {
          ret_read = instr.read(buff);
          if(ret_read > 0)
           {
              MainActivity.response += new String(buff, 0, ret_read);
           }
         }
         while (ret_read >= 0);
        }
         catch (Exception e) {
            MainActivity.response += e.toString();
            MainActivity.response += "From reading from telnet server ! \n";
          }
        textResponse.setText(response);
        super.onPostExecute(result);
     }

我遇到的问题 - enter image description here

0 个答案:

没有答案