Android 3G UDP广播

时间:2011-09-09 14:52:26

标签: java android networking udp

我正处于开发跨平台UDP服务器客户端的早期阶段。在我的情况下,客户端通过移动热点选项向他们连接的Android手机发送广播。

我目前正在通过将服务器和客户端放在同一台设备上进行测试。但是,由于boxee远程应用程序,我只知道如何获取广播地址。

是否有人知道如何使用以下代码执行相同操作,但获取移动网络广播地址?

所以,这是代码:

InetAddress getBroadcastAdd(Context context) throws IOException {
    WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    DhcpInfo dhcp = wifi.getDhcpInfo();

    int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
    byte[] quads = new byte[4];
    for (int k = 0; k < 4; k++)
      quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
    return InetAddress.getByAddress(quads);
}

对于老鹰眼的读者,你会收集到我实际上不需要这个代码让应用程序工作,因为其他设备将从wifi获得广播地址但我确实需要在这个设备上做一些测试第一

提前致谢!

1 个答案:

答案 0 :(得分:0)

大多数网络(Wifi和3G)使用NAT。 NAT允许出站连接,但阻止入站(互联网到设备)连接。

当您的服务器和设备都在同一本地网络(wifi)上时,这可以正常运行,因为您没有遍历NAT网关。

理由:您尝试做的事情(从互联网连接到设备)在大多数网络中无效。

<强>更新

如果您的设备位于同一本地网络上,那么您可以使用标准化的广告/发现服务方式:Bonjour aka Zeroconf。据报道,java实现可以在android上运行:http://jmdns.sourceforge.net/

另见http://home.heeere.com/tech-androidjmdns.html