DatagramSocket()异常

时间:2014-05-19 13:44:31

标签: java android udp

我是android的新手,特别是Java编程。我试图实现一个非常简单的UDP服务器,该服务器应该从固定端口接收来自客户端的广播UDP消息。 我使用的代码的核心是以下类:

private class MyDatagramReceiver extends Thread {
    private boolean bKeepRunning = true;


    public void run() {
        String message;
        message = new String("starting");
        byte[] lmessage = new byte[200];
        DatagramPacket packet = new DatagramPacket(lmessage, lmessage.length);
        updateTextView(message);
        try {
            DatagramSocket socket = new DatagramSocket(2500);
            message = new String("opened");
            updateTextView(message);
            while(bKeepRunning) {
                socket.receive(packet);
                message = new String(lmessage, 0, packet.getLength());                  
                if (message != null) {
                    message = new String("received"); 
                    updateTextView(message);
                    //updateTextView(message);
                    message = null;
                } else { 
                    message = new String("no_msg"); 
                    updateTextView(message);
                }
            }
            if (socket != null) {
                socket.close();

            }
        } catch (Exception e) {
            message = new String("problem"); 
            updateTextView(message);
            e.printStackTrace();
        }


    }

    public void kill() { 
        bKeepRunning = false;
    }


}

正如您所看到的,我将一些updateTextView(消息)用于调试目的。特别是我应该得到一个"开始"线程启动时的字符串,而不是"打开"如果DatagramSocket正确打开(并且没有从客户端发送UDP消息),则为字符串。不幸的是,我无法看到"打开"字符串,但我总是得到一个"问题"字符串,这意味着我捕获异常。 此外,我无法在Logcat窗口中读取任何错误。所以我试图了解try块中的指令会引发什么样的异常?有人能帮助我理解我错过的东西。感谢所有提前。

0 个答案:

没有答案