【发布时间】:2011-05-18 17:11:00
【问题描述】:
我的目标是找到WIFI网络中所有的bonjour服务,找到它们的ip/port,并通过HTTP进行通信。
发现错误地发现托管在 iMac 上的 Bonjour 服务 - 发现服务名称,但端口 = 0,InetAddress[] = null。 与 Windows PC 上托管的相同服务的连接工作正常(来自一个供应商的相同版本的软件) - 名称、url 和端口正确发现。 Bonjour 服务浏览器可以正确看到这两个服务。
使用JmDNS 3.4.0lib,见代码示例(部分代码省略):
MulticastLock lock = wifi.createMulticastLock(MULTICAST_LOCK_TAG);
lock.setReferenceCounted(true);
lock.acquire();
final InetAddress inetAddress = getLocalIpAddress();
jmdns = JmDNS.create(inetAddress, JMDNS_NAME);
ServiceInfo[] infos = jmdns.list(CAMERA_SERVERS);
if (infos != null && infos.length > 0) {
for (int i = 0; i < infos.length; i++) {
name = infos[i].getName();
InetAddress[] addresses = infos[i].getInetAddresses();
url = addresses[0].getHostAddress();
port = infos[i].getPort();
}
PS。尝试了 Apple 的 dns_sd.jar,但它依赖于原生代码,无法在 Android 中使用。
有什么想法吗?
谢谢。
【问题讨论】: