我是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块中的指令会引发什么样的异常?有人能帮助我理解我错过的东西。感谢所有提前。