繁体   English   中英

Android 3G UDP广播

[英]Android 3G UDP Broadcast

我正处于开发跨平台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获取广播地址,但是我确实需要首先在此设备上进行一些测试。

提前致谢!

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

当您的服务器和设备都在同一本地网络(wifi)上时,这将起作用,因为您没有遍历NAT网关。

原理:您尝试执行的操作(从Internet连接到设备)在大多数网络中均无效。

更新资料

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

另请参阅http://home.heeere.com/tech-androidjmdns.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM