Android UDP无法从外部LAN接收

时间:2015-04-03 20:12:14

标签: java android sockets udp

我的代码无法从家庭网络外部接收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

2 个答案:

答案 0 :(得分:1)

192.168.0.X是内部NAT地址。任何网络都可以使用它,但无法从外面的任何地方访问它。您需要配置路由器以将其传递到PC并点击路由器的外部IP,或者您需要一个真实的网络地址。

答案 1 :(得分:0)

仔细阅读this示例。我想你在打开时试图在同一个套接字中读写。如果不能正常工作,请粘贴更多代码以帮助您