问题标签 [jmdns]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
12616 浏览

android - Android NSD(网络服务发现)是否与 iOS 中的 Bonjour 服务兼容?

我将为 iOS 和 Android 创建一个无服务器的本地网络应用程序。iOS 和 Android 设备中的应用程序应该相互发现并相互交谈。

我知道有平台内置服务(从 v4.1 开始是 iOS 中的 Bonjour 和 Android 中的 NSD),此外,还可以使用开箱即用的开源jmdns包。

我不知道如何选择,它们的兼容性如何。

我的问题是:

  1. Android NSD(网络服务发现)是否与 iOS 中的 Bonjour 兼容?我应该在我的应用程序中使用什么来进行服务发现。
  2. 如果我还为应用程序开发 PC 版本,是否需要使用第三方库?
0 投票
1 回答
363 浏览

android - 在 Android 上,JmDNS 在网络 ON 和 OFF 的情况下被反复调用

我在为 Android 应用程序使用 JmDNS 库时遇到问题。

由于 Bonjour 不定期发送保持活动消息,因此我每 30 秒关闭和打开一个新的 JmDNS 实例,以便调用 serviceAdded 和 serviceResolved 函数。

但是在这些实例创建之间,如果我关闭并打开 Wifi,虽然 JmDNS 实例的创建成功,但我的 serviceAdded 和 serviceResolved 函数不会被调用。

我的主要疑问是:

1)是否可以一次又一次地重新创建这些实例并因此产生一种轮询?或者,还有更好的方法?

2)如果网络关闭再打开,每次创建JmDNS实例时我需要做些什么吗?

这是我的代码片段:

0 投票
0 回答
490 浏览

android - JmDNS 无法解析:将 DNS 结果写入客户端时出错

尝试解析 JmDNS 服务时,我在 logcat 中得到以下输出。这是什么意思?

0 投票
0 回答
648 浏览

android - Jmdns 不支持服务

我遵循了 JmDNS 附带的示例。我的代码如下!

我从来没有看到"called serviceResolved"日志消息。但我看到service added日志消息。我还应该做些什么来解决服务以获取主机的 ip?

0 投票
0 回答
219 浏览

android - JMDNS 服务重新发布

我正在使用 JMDNS 通过 Wifi 注册服务。我需要定期重新宣布它。我检查过

ServiceInfo#setText(最终字节 [] 文本)

ServiceInfo#setText(最终地图)

而且,两者都对我不起作用。有没有其他解决方法可以做同样的事情?

0 投票
1 回答
355 浏览

android - Android 上 JmDNS 的网络配置。已添加服务但未解决

我无法在 Android 上使用 JmDNS 解析 mDNS 服务。服务偶尔会解析,但大多数时候只调用 serviceAdded() 而不是 serviceResolved()!有谁知道问题可能是什么?如果我缺少一些网络配置或类似的?

我正在使用具有以下配置的以太网( eth1 ):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:18:7d:32:77:40 brd ff:ff:ff:ff:ff:ff inet 172.18.0.191/24 brd 172.18.0.255 scope global eth0 inet6 2a00:801:19:1:218:7dff:fe32:7740/64 scope global dynamic valid_lft 2591918sec preferred_lft 604718sec inet6 fe80::218:7dff:fe32:7740/64 scope link tentative dadfailed valid_lft forever preferred_lft forever 3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN link/sit 0.0.0.0 brd 0.0.0.0 5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:14:d1:b0:7b:89 brd ff:ff:ff:ff:ff:ff inet 192.168.3.162/24 scope global eth1 inet6 fe80::214:d1ff:feb0:7b89/64 scope link valid_lft forever preferred_lft forever
Routing table: 172.18.0.1 dev eth0 scope link 224.0.0.251 dev eth1 scope link 192.168.3.0/24 dev eth1 proto kernel scope link src 192.168.3.162 172.18.0.0/24 dev eth0 proto kernel scope link src 172.18.0.191 metric 202 default via 172.18.0.1 dev eth0 default via 172.18.0.1 dev eth0 metric 202

这是我正在使用的代码:

0 投票
2 回答
8035 浏览

android - Android - jmdns 没有发现设备

我正在尝试实现一个类来发现网络上的服务。我尝试过使用Android 的 NSD,它确实发现服务很好,但它只支持 API 级别 16 及更高级别,而且我似乎无法检索服务信息中的 txtRecord 字段(由于某种原因它返回 null)。原来这是一个已知问题...

所以现在我正在尝试使用jmDNS,它似乎根本找不到服务。这是我的课程(我正在使用 AndroidAnnotations 框架)MDnsHelper:

在我的应用程序中,我调用:

然后startDiscovery();开始扫描和stopDiscovery();停止扫描。

当然,我在清单中给了应用程序所需的权限......我在这里错过了什么?如果您需要我提供其他代码/信息 - 请询问。谢谢!!

0 投票
2 回答
1505 浏览

c# - Xamarin.Android JmDNS 绑定问题

我开始为 Xamarin.Android 开发 JmDNS 绑定。我设法构建了绑定,但我无法从我的代码中引用它。https://github.com/ytn3rd/monodroid-bindings/tree/master/JmDNS

我遇到的第一个问题是没有 IDNSListener 类可供参考。所以我在那里添加了一个部分接口。我有它需要的功能 void updateRecord(DNSCache dnsCache, long now, DNSEntry record); 注释掉,因为它会抱怨无法引用 DNSCache 或 DNSEntry。(我相信我删除了 DNSCache,这就是为什么)

不确定我所做的某些事情是否不好,只是删除节点以使其编译。例如。我添加了这个以消除以下错误。

E:\Users\brads_000\Documents\GitHub\ytn3rd\monodroid-bindings\JmDNS\bindings\obj\Debug\generated\src\Javax.Jmdns.Impl.JmDNSImpl.cs(24,24): 错误 CS0738: 'Javax. Jmdns.Impl.JmDNSImpl.SubTypeEntry'没有实现接口成员'Java.Util.IMapEntry.Key'。“Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry.Key”无法实现“Java.Util.IMapEntry.Key”,因为它没有匹配的返回类型“Java.Lang.Object”。(CS0738) (JmDNS-Bindings) E:\Users\brads_000\Documents\GitHub\ytn3rd\monodroid-bindings\JmDNS\bindings\obj\Debug\generated\src\Javax.Jmdns.Impl.JmDNSImpl.cs(24,24 ):错误 CS0738:“Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry”未实现接口成员“Java.Util.IMapEntry.Value”。'Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry.Value' 无法实现' Java.Util.IMapEntry.Value',因为它没有匹配的返回类型'Java.Lang.Object'。(CS0738) (JmDNS 绑定)

问题来自 Java.Util.IMapEntry 类。我认为正确的操作是创建我自己的部分 SubEntryType,然后覆盖字符串 Key 属性,但它不会拾取它。我的下一个尝试是这样做。

Java.Lang.Object

这将解决该错误,但随后会导致错误

E:\Users\brads_000\Documents\GitHub\ytn3rd\monodroid-bindings\JmDNS\bindings\obj\Debug\generated\src\Javax.Jmdns.Impl.JmDNSImpl.cs(12,12):错误 CS1502:最佳重载'Android.Runtime.JNIEnv.NewString(string)' 的方法匹配有一些无效参数 (CS1502) (JmDNS-Bindings)

但同样,它不想采用这种新方法。

我删除了 javax.jmdns.impl.DNSCache 因为与上面的键/值相同的错误,并且,

E:\Users\brads_000\Documents\GitHub\ytn3rd\monodroid-bindings\JmDNS\bindings\obj\Debug\generated\src\Javax.Jmdns.Impl.DNSCache.cs(95,95): 错误 CS0508: 'Javax. Jmdns.Impl.DNSCache.EntrySet()':返回类型必须是 'System.Collections.ICollection' 以匹配被覆盖的成员 'Java.Util.AbstractMap.EntrySet()' (CS0508) (JmDNS-Bindings)

我似乎已经修复了

System.Collections.ICollection

即使它已经返回。
公共覆盖全局::System.Collections.Generic.ICollection EntrySet ()

无论如何,任何帮助都可以让这个很棒的库启动并运行:)

0 投票
1 回答
442 浏览

java - 来自 RoboVM 中 iOS 设备上 getLocalHost 的 UnknownHostException

我正在尝试在 iOS 设备上初始化 JmDNS,使用以下行获取地址:

它在 iphone 模拟器中运行良好,但是在物理 iOS 设备上进行测试时,这会导致 UnknownHostException,并带有堆栈跟踪:

我读过建议将“127.0.0.1”作为地址传递,但是当其他设备试图通过该 IP 连接到它时,这不起作用。我不确定从这里做什么——我肯定需要获取本地 IP 地址,但我不知道如何获取它。这似乎与 roboVM 有关,但我不完全确定。也许有人可以对此有所了解?

0 投票
1 回答
325 浏览

bonjour - 与 jmdns.jar 通信

我正在使用 jmdns 库来发现网络中其他设备发布的 mDNS 服务广告。我使用的是安卓 4.2。我已经从 jmdns 官方网站下载了演示应用程序,AndroidDnssdDiscoveryEclipse 应用程序正在崩溃。

这是日志..

在这里(jmdns.jar 不适用于 android 4.0 或更高版本),提到 jmdns.jar 不适用于 Android 4.0 或更高版本,但我在我的设备上使用了 ZeroConf Browser(使用 jmdns)并且运行良好。

在调试应用程序时,我发现我的应用程序找不到 jmdns.jar 文件。我没有对 jmdns.jar 文件做任何事情 接受我已经从应用程序目录中删除了原始 jmdns.jar 文件(1kb),取而代之的是我已经放置了下载时附带的 jmdns.jar 文件(200kb)。