我一直在试着让SocketServer在我的手机上工作。我最近升级到了ICS,所以现在我需要在一个单独的线程中做我的网络工作,这是我不习惯的。我写了一些代码,但当我试图连接到套接字时,应用程序崩溃了。
当切换开关开关时,我启动serverSocket:
final Switch connectionSwitch = (Switch) findViewById(R.id.connectionSwitch);
connectionSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
new Thread(){
public void run() {
try {
serverSocket = new ServerSocket(port);
socket = serverSocket.accept();
outToServer = new DataOutputStream(socket.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
while(connectionSwitch.isChecked()) {
myPacket[0] = (byte) 0xAA;
myPacket[1] = (byte) 0x01;
myPacket[2] = (byte) (fanFrontSpeed/256);
myPacket[3] = (byte) (fanFrontSpeed%256);
myPacket[4] = (byte) (fanLeftSpeed/256);
myPacket[5] = (byte) (fanLeftSpeed%256);
myPacket[6] = (byte) (fanRightSpeed/256);
myPacket[7] = (byte) (fanRightSpeed%256);
try {
outToServer.write(myPacket,0,8);
} catch (IOException e) {
e.printStackTrace();
}
}
try {
socket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}.start();
}
}
});我得到的错误是:
FATAL EXCEPTION: Thread-4487
java.lang.NullPointerException发布于 2012-08-14 16:56:22
调试这类代码的最简单方法是在调试器上一步一步地执行,然后在执行每一行之前检查是否有任何内容为空。
例如,可能发生的情况:在服务器初始化期间,发生了一些错误,它在UnknownHostException或IOException中被捕获,现在你的代码带有一个outToServer==null,因为它从未被初始化,并且每当它尝试outToServer.write(myPacket,0,8);时,你都会有一个空指针异常。
但它可能是十亿种不同的东西,这是我能想到的最明显的。
https://stackoverflow.com/questions/11943940
复制相似问题