Android SocketServer崩溃应用程序

Android SocketServer崩溃应用程序,android,sockets,Android,Sockets,我一直在尝试让SocketServer在我的手机上工作。我最近升级到了ICS,所以现在我需要在一个单独的线程中完成我的网络工作,我不习惯这样做。我已经写了一些代码,但一旦我尝试连接到套接字,应用程序就会崩溃 我在切换开关时启动serverSocket: final Switch connectionSwitch = (Switch) findViewById(R.id.connectionSwitch); connectionSwitch.setOnCheckedChangeListener(n

我一直在尝试让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

调试类似内容的最简单方法是在调试器上一步一步地进行,并在执行每一行之前检查是否有任何内容为null

e、 g.可能发生的情况: 在服务器初始化过程中,发生了一些错误,它被捕捉到UnknownHostException或IOException,现在您的代码携带一个outToServer==null,因为它从未初始化过,当它尝试
outToServer.write(myPacket,0,8)时您有一个空指针异常


但是可能有十亿种不同的东西,这是我能想到的最明显的。

你能通过logcat获得更具体的错误文本吗?否则我们只能猜测什么可能是空的..我已经对它进行了更多的处理,并且已经解决了outToServer.write(myPacket,0,8)的问题。要么我没有正确地使用它(我以前一直在使用writeInt,它正在工作),要么我构造数据包的方式是错误的。