我的代碼無法接收來自外部網絡外部的UDP消息。通信是在Android和Java計算機應用程序之間進行的,在我的局域網內部使用IP(例如192.168.0.3)代碼起作用,如果我將我的Java計算機應用程序放入我的在線服務器(顯然,我使用外部IP更改了每個IP)不工作; Android可以發送,但無法接收。Android UDP無法從外部局域網接收
的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){
}
}
}
爪哇計算機應用程序代碼: http://pastebin.com/2hVGeP6R
嘗試在寫入一些數據後調用套接字上的flash()方法。這將如下工作: - >發送數據到服務器 - > flush(告訴寫入完成) - >接收數據包。 – 2015-04-03 20:16:27
@GiorgosOikonomou對不起,我不明白你的意思是「閃光()」 – user4747586 2015-04-03 20:18:41
你有沒有嘗試過從另一個WiFi的應用程序?可能您的電話公司過濾了其中一個端口(因爲您使用它接收了25565)?您可以使用工具來觀察您的數據包是否已發送? – 2015-04-03 20:55:27