Java 尝试连接和发送telnet命令时的NPE
我希望你们都能帮我 基本上我的应用程序有一些问题。我以前在Stack上的问题现在都解决了,所以感谢所有帮助我的人 我现在得到一个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
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);
....
}