我的代码无法接收来自家庭网络外部的UDP消息。Android和Java计算机应用程序之间的通信,在我的局域网内有IP(例如192.168.0.3),代码就可以工作,如果我把Java计算机应用软件放在我的在线服务器内(显然我用外部IP更改了每个IP),这就不起作用;安卓可以发送,但无法接收。
安卓代码:
@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
192.168.0.X是一个内部NAT地址。任何网络都可以使用它,但从外部任何地方都无法访问它。你要么需要配置路由器,将其传送到你的电脑并访问路由器的外部IP,要么你需要一个真实的网络地址。
仔细阅读这个例子。我想你正试图在同一个插座打开的时候读写。如果它不起作用,请粘贴更多的代码以帮助您