Java 尝试连接和发送telnet命令时的NPE

Java 尝试连接和发送telnet命令时的NPE,java,android,tcp,android-asynctask,telnet,Java,Android,Tcp,Android Asynctask,Telnet,我希望你们都能帮我 基本上我的应用程序有一些问题。我以前在Stack上的问题现在都解决了,所以感谢所有帮助我的人 我现在得到一个NPE,但不知道为什么 基本上我的代码是: 连接到设备(IP地址来自intent和固定端口32) 连接后,发送命令“root/r/n”两次。(这是设备的登录,不是实际连接,连接不受保护 返回“SNX_COM>”或“SCX_COM>”后,等待命令 然后,我希望能够通过单击按钮向他们发送命令 我的问题是我无法激活初始连接。如果有人能帮助我,我将不胜感激 Java类: pac

我希望你们都能帮我

基本上我的应用程序有一些问题。我以前在Stack上的问题现在都解决了,所以感谢所有帮助我的人

我现在得到一个NPE,但不知道为什么

基本上我的代码是:

  • 连接到设备(IP地址来自intent和固定端口32)
  • 连接后,发送命令“root/r/n”两次。(这是设备的登录,不是实际连接,连接不受保护
  • 返回“SNX_COM>”或“SCX_COM>”后,等待命令
  • 然后,我希望能够通过单击按钮向他们发送命令
  • 我的问题是我无法激活初始连接。如果有人能帮助我,我将不胜感激

    Java类:

    package com.smarte.smartipcontrol;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.view.View;
    
    public class IPControl extends Activity {
    
    private Socket socket;
    private static final int REDIRECTED_SERVERPORT = 32;
    public PrintWriter out;
    public BufferedReader in;
    public String data;
    public Object pd;
    //get the message from intent
    Intent intent = getIntent();
     String actu_ip = intent.getStringExtra(IPEntry.ACTUALSMARTIP);
    
    public void getModel(View view) {
        try {
            out.println("[m\r\n");
            //System.out.print("root\r\n");
            while(!in.ready());
            String textStatus = readBuffer();
    
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_ipcontrol);
    
    
    
        try {
            new AsyncAction().execute();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    private class AsyncAction extends AsyncTask<String, Void, String> {
        protected String doInBackground(String... args) { 
            try {
                InetAddress serverAddr = InetAddress.getByName(actu_ip);
                socket = new Socket(serverAddr, REDIRECTED_SERVERPORT);
                OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream());
                BufferedWriter bw = new BufferedWriter(osw);
                out = new PrintWriter(bw, true); 
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                while (! in .ready());
                readBuffer();
                out.println("root\r\n");
                while (! in .ready());
                readBuffer();
                out.println("root\r\n");
                while (! in .ready());
                String msg = "";
                while ( in .ready()) {
                    msg = msg + (char) in .read();
                }
                out.println("[c,l#,i5,o*\r\n");
                while (! in .ready());
                readBuffer();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            return null;//returns what you want to pass to the onPostExecute()
        }
    
        protected void onPostExecute(String result) {
    
            //results the data returned from doInbackground
    
            IPControl.this.data = result;
    
        }
    }
    
    private String readBuffer() throws IOException {
        String msg = "";
    
        while(in.ready()) {
            msg = msg + (char)in.read();
        }
        //System.out.print(msg);
        if(msg.indexOf("SNX_COM> ") != -1) return msg.substring(0, msg.indexOf("SNX_COM> "));
        else if(msg.indexOf("SCX_COM> ") != -1) return msg.substring(0, msg.indexOf("SCX_COM> "));
        else return msg;
    }
    }
    
    package com.smarte.smartipcontrol;
    导入java.io.BufferedReader;
    导入java.io.BufferedWriter;
    导入java.io.IOException;
    导入java.io.InputStreamReader;
    导入java.io.OutputStreamWriter;
    导入java.io.PrintWriter;
    导入java.net.InetAddress;
    导入java.net.Socket;
    导入java.net.UnknownHostException;
    导入android.app.Activity;
    导入android.content.Intent;
    导入android.os.AsyncTask;
    导入android.os.Bundle;
    导入android.view.view;
    公共类IPControl扩展了活动{
    专用插座;
    私有静态最终int重定向_SERVERPORT=32;
    公共打印输出;
    公共缓冲区中的读卡器;
    公共字符串数据;
    公共对象pd;
    //从意图中获得信息
    Intent=getIntent();
    String actu_ip=intent.getStringExtra(IPEntry.ACTUALSMARTIP);
    公共void getModel(视图){
    试一试{
    out.println(“[m\r\n”);
    //System.out.print(“root\r\n”);
    而(!in.ready());
    字符串textStatus=readBuffer();
    }捕获(IOE异常){
    e、 printStackTrace();
    }
    }
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act\u ipcontrol);
    试一试{
    新建AsyncAction().execute();
    }捕获(例外e){
    e、 printStackTrace();
    }
    }
    私有类AsyncAction扩展了AsyncTask{
    受保护的字符串doInBackground(字符串…args){
    试一试{
    inetAddressServerAddr=InetAddress.getByName(actu_ip);
    套接字=新套接字(serverAddr,重定向的\u SERVERPORT);
    OutputStreamWriter osw=新的OutputStreamWriter(socket.getOutputStream());
    BufferedWriter bw=新的BufferedWriter(osw);
    out=新的PrintWriter(bw,真);
    in=新的BufferedReader(新的InputStreamReader(socket.getInputStream());
    而(!in.ready());
    readBuffer();
    out.println(“root\r\n”);
    而(!in.ready());
    readBuffer();
    out.println(“root\r\n”);
    而(!in.ready());
    字符串msg=“”;
    while(在.ready()中){
    msg=msg+(char)in.read();
    }
    out.println(“[c,l,i5,o*\r\n”);
    而(!in.ready());
    readBuffer();
    }捕获(未知后异常e){
    e、 printStackTrace();
    }捕获(IOE异常){
    e、 printStackTrace();
    }
    return null;//返回要传递给onPostExecute()的内容
    }
    受保护的void onPostExecute(字符串结果){
    //结果从doInbackground返回的数据
    IPControl.this.data=结果;
    }
    }
    私有字符串readBuffer()引发IOException{
    字符串msg=“”;
    while(在.ready()中){
    msg=msg+(char)in.read();
    }
    //系统输出打印(msg);
    if(msg.indexOf(“SNX_COM>”)!=-1)返回msg.substring(0,msg.indexOf(“SNX_COM>”);
    else if(msg.indexOf(“SCX_COM>”)!=-1)返回msg.substring(0,msg.indexOf(“SCX_COM>”);
    否则返回味精;
    }
    }
    
    日志:

    12-07 09:29:24.596: E/AndroidRuntime(772): FATAL EXCEPTION: main
    12-07 09:29:24.596: E/AndroidRuntime(772): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.smarte.smartipcontrol/com.smarte.smartipcontrol.IPControl}: java.lang.NullPointerException
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.os.Handler.dispatchMessage(Handler.java:99)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.os.Looper.loop(Looper.java:137)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.app.ActivityThread.main(ActivityThread.java:5039)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at java.lang.reflect.Method.invokeNative(Native Method)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at java.lang.reflect.Method.invoke(Method.java:511)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at dalvik.system.NativeStart.main(Native Method)
    12-07 09:29:24.596: E/AndroidRuntime(772): Caused by: java.lang.NullPointerException
    12-07 09:29:24.596: E/AndroidRuntime(772):  at com.smarte.smartipcontrol.IPControl.<init>(IPControl.java:29)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at java.lang.Class.newInstanceImpl(Native Method)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at java.lang.Class.newInstance(Class.java:1319)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
    12-07 09:29:24.596: E/AndroidRuntime(772):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
    12-07 09:29:24.596: E/AndroidRuntime(772):  ... 11 more
    
    12-07 09:29:24.596:E/AndroidRuntime(772):致命异常:main
    12-07 09:29:24.596:E/AndroidRuntime(772):java.lang.RuntimeException:无法实例化活动组件信息{com.smarte.smartipcontrol/com.smarte.smartipcontrol.IPControl}:java.lang.NullPointerException
    12-07 09:29:24.596:E/AndroidRuntime(772):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
    12-07 09:29:24.596:E/AndroidRuntime(772):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    12-07 09:29:24.596:E/AndroidRuntime(772):在android.app.ActivityThread.access$600(ActivityThread.java:141)
    12-07 09:29:24.596:E/AndroidRuntime(772):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    12-07 09:29:24.596:E/AndroidRuntime(772):在android.os.Handler.dispatchMessage(Handler.java:99)上
    12-07 09:29:24.596:E/AndroidRuntime(772):位于android.os.Looper.loop(Looper.java:137)
    12-07 09:29:24.596:E/AndroidRuntime(772):位于android.app.ActivityThread.main(ActivityThread.java:5039)
    12-07 09:29:24.596:E/AndroidRuntime(772):位于java.lang.reflect.Method.Invokenactive(本机方法)
    12-07 09:29:24.596:E/AndroidRuntime(772):位于java.lang.reflect.Method.invoke(Method.java:511)
    12-07 09:29:24.596:E/AndroidRuntime(772):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    12-07 09:29:24.596:E/AndroidRuntime(772):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    12-07 09:29:24.596:E/AndroidRuntime(772):在dalvik.system.NativeStart.main(本机方法)
    12-07 09:29:24.596:E/AndroidRuntime(772):由以下原因引起:java.lang.NullPointerException
    12-07 09:29:24.596:E/AndroidRuntime(772):在com.smarte.smartipcontrol.IPControl.(IPControl.java:29)
    12-07 09:29:24.596:E/AndroidRuntime(772):位于java.lang.Class.newInstanceImpl(本机方法)
    12-07 09:29:24.596:E/AndroidRuntime(772):位于java.lang.Class.newInstance(Class.java:1319)
    12-07 09:29:24.596:E/AndroidRuntime(772):在android.app.Instrumentation.newActivity(Instrumentation.java:1054)上
    12-07 09:2
    
    Intent intent = getIntent();
    String actu_ip = intent.getStringExtra(IPEntry.ACTUALSMARTIP);
    
    Intent intent;
    String actu_ip;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ....
        Intent intent = getIntent();
        String actu_ip = intent.getStringExtra(IPEntry.ACTUALSMARTIP);
        ....
    }