首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓SocketServer崩溃应用

安卓SocketServer崩溃应用
EN

Stack Overflow用户
提问于 2012-08-14 08:00:21
回答 1查看 355关注 0票数 1

我一直在试着让SocketServer在我的手机上工作。我最近升级到了ICS,所以现在我需要在一个单独的线程中做我的网络工作,这是我不习惯的。我写了一些代码,但当我试图连接到套接字时,应用程序崩溃了。

当切换开关开关时,我启动serverSocket:

代码语言:javascript
复制
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();
    }
}
});

我得到的错误是:

代码语言:javascript
复制
FATAL EXCEPTION: Thread-4487
java.lang.NullPointerException
EN

回答 1

Stack Overflow用户

发布于 2012-08-14 16:56:22

调试这类代码的最简单方法是在调试器上一步一步地执行,然后在执行每一行之前检查是否有任何内容为空。

例如,可能发生的情况:在服务器初始化期间,发生了一些错误,它在UnknownHostException或IOException中被捕获,现在你的代码带有一个outToServer==null,因为它从未被初始化,并且每当它尝试outToServer.write(myPacket,0,8);时,你都会有一个空指针异常。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11943940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档