我有一个原型 Android 应用程序,它正在侦听多播数据包以“发现”要与之通信的客户端。套接字设置类似于:
InetAddress group = InetAddress.getByName("228.1.2.3");
MulticastSocket s = new MulticastSocket(4000);
s.joinGroup(group);
当所有设备都通过 WiFi 连接时,此功能非常有效。我想通过手机作为便携式热点来支持这一点。但是,虽然我的所有设备似乎都正确连接到热点,但我不再接收多播数据。我想知道是否存在禁止在热点模式下进行此类通信的限制,或者是否需要任何其他网络配置来启用此功能?我已经在运行 Gingerbread 和 Froyo 的几个不同设备上尝试过此操作,但没有成功。
正如本文所示:https://plus.google.com/+Chainfire/posts/9NMemrKYnCd https://plus.google.com/+Chainfire/posts/9NMemrKYnCd
MulticastSocket::setNetworkInterface()
就是答案
您可以通过以下方式找到 wlan0 eth:
public static NetworkInterface getWlanEth() {
Enumeration<NetworkInterface> enumeration = null;
try {
enumeration = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e) {
e.printStackTrace();
}
NetworkInterface wlan0 = null;
StringBuilder sb = new StringBuilder();
while (enumeration.hasMoreElements()) {
wlan0 = enumeration.nextElement();
sb.append(wlan0.getName() + " ");
if (wlan0.getName().equals("wlan0")) {
//there is probably a better way to find ethernet interface
Log.i(TAG, "wlan0 found");
return wlan0;
}
}
return null;
}
尝试一下,让我知道它在热点模式下是否有效...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)