我的代码无法从家庭网络外部接收UDP消息。通信是在Android和Java计算机应用程序之间,我的局域网内的IP(例如192.168.0.3)代码可以工作,如果我把我的Java计算机应用程序放在我的在线服务器中(显然我用外部IP改变了每个IP)这个没有工作; Android可以发送,但无法接收。
Android代码:
@Override
protected Integer doInBackground(Void... params) {
DatagramSocket socket = null;
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
try {
socket = new DatagramSocket(25565);
} catch (Exception e) {
Log.i("Ex ", "");
}
while (true) {
try {
socket.receive(packet);
String message = new String(packet.getData(), 0,packet.getLength());
Log.i("message", "" + message);
} catch (IOException e) {
Log.i("IO Ex", "");
}
catch (Exception e){
}
}
}
Java计算机应用程序代码: http://pastebin.com/2hVGeP6R
答案 0 :(得分:1)
192.168.0.X是内部NAT地址。任何网络都可以使用它,但无法从外面的任何地方访问它。您需要配置路由器以将其传递到PC并点击路由器的外部IP,或者您需要一个真实的网络地址。
答案 1 :(得分:0)
仔细阅读this示例。我想你在打开时试图在同一个套接字中读写。如果不能正常工作,请粘贴更多代码以帮助您