Android UDP 無法從 LAN 外部接收



我的代码无法接收来自家庭网络外部的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,要么你需要一个真实的网络地址。

仔细阅读这个例子。我想你正试图在同一个插座打开的时候读写。如果它不起作用,请粘贴更多的代码以帮助您

最新更新