我做了一个简单的UDP聊天p2p,当我尝试它时,一切正常。现在我要对此进行报告,我正在测试项目,但我在socket.getInetAddress.getHostAddress()
上进行了NPE,我无法理解为什么。
代码如下:
protected String doInBackground(Void... arg0) {
byte[] lMsg = new byte[1024];
DatagramPacket packet = new DatagramPacket(lMsg, lMsg.length);
DatagramSocket socket = null;
try {
while(true) {
socket = new DatagramSocket(port);
socket.receive(packet);
ip = socket.getInetAddress().getHostAddress();
message = new String(lMsg, 0, packet.getLength());
publishProgress();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
String s = e.getLocalizedMessage();
} finally {
if (socket != null) {
socket.close();
}
}
return "Done";
}
logcat告诉我socket.getInetAddress().getHostAddress()
生成空指针异常。
我尝试使用getLocalAddress()
检查问题是否是我的想法,我是对的,但我无法理解如何解决它。我用AsyncTask
实现了服务器UDP。
任何想法都赞赏。