- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
有没有人让 Multicast 在 Android 2.2 上工作,特别是用于 Bonjour 服务检测的 JmDNS。 Android 1.5->2.0 时间范围内有许多问题和答案,包括在 stackOverflow 上,表明不同程度的成功,以及错误跟踪器中的错误,表明它已在 2.2 (http://code.google.com/p/android/issues/detail?id=2323) 中修复和关闭。我已经尝试过“TuneControl”源代码,但它在 ~1.5 上有效并且尚未更新,并且在 2.2 上不适用于我。
所以,问题...1) 任何人是否见过 2.2 上的多播工作,特别是 JmDNS,特别是 Bonjour 服务检测?
2) 代码中需要什么才能使其工作?
我正在使用适当的权限:
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
我获得了多播锁:
WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null)
{
MulticastLock mcLock = wifi.createMulticastLock("mylock");
mcLock.acquire();
...
然后尝试启动jmDNS寻找服务器:
mdns = JmDNS.create(addr, HOSTNAME);
jmdns.addServiceListener(TOUCH_ABLE_TYPE, listener);
jmdns.addServiceListener(DACP_TYPE, listener);
...
监听器永远不会看到任何服务。我已经使用 Wireshark 验证了请求数据包已发送,并且服务器进行了响应,但 jmDNS 库中的套接字监听器代码从未看到响应数据包。
所以...我错过了什么吗?这仍然是一个错误吗?有没有人得到任何像这样远程工作的东西???
最佳答案
为了(粗鲁地)回答我自己的问题,http://code.google.com/p/android/issues/detail?id=2917#c48 提供了更多信息由另一个人。正如他们所说,为了后代,这是 brian.ro...@gmail.com 的答案...
"I've spent quite a bit of time debugging mDNS issues with JmDNS on my Evo and HTC Hero (CDMA). What I found is there appears to be a filter in place in the broadcom wireless driver on the Evo (and since I'm getting a similiar reprt from an HTC Desire user - with the same chipset, presumably that handset as well). The filter, by default, blocks any non-unicast or network broadcast traffic, including multicast. Apparently the theory was it's a battery saver.
The problem appears to be the wpa_supplicant on the Evo does not support removing those filters when you get a MulticastLock. (Check the log output right after you get the lock and you'll see what I mean). Unfortunately what has happened is the hardware vendors have fragmented multicast support.... :("
所以...看来这是一个设备问题,而不是编码问题。哦。 :( 如果我有机会在另一台设备上进行测试...
关于android - Android 2.2 上的多播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3623143/
我是一名优秀的程序员,十分优秀!