问题标签 [zeroconf]

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 回答
526 浏览

ios - 更改名称后 iPad 停止响应 bonjour/zeroconf

运行 iOS 6.1 的 iPad4。

它以当前名称(例如 ping example.local)响应 bonjour/mdns 请求。

转到设置 > 常规 > 关于 > 名称并更改名称(例如更改为新名称)。

iPad 停止响应 mdns 请求。Wireshark 显示 ipad 没有响应。

重新启动/重置网络,所有设置均无效。在 Xcode 下,控制台显示:

mDNSResponder[31]:用户将计算机名称从“example”更新为“newname” mDNSResponder[31]:用户将本地主机名从“example”更新为“newname”</p>

iPad 在 iTunes 和 XCode 下显示为“新名称”,因此设备的友好名称是可以的。它还发送 mdns 请求(例如浏览http://somewhere.local)。

0 投票
1 回答
1461 浏览

bonjour - 从 IP 地址获取链路本地域名(即使用多播 DNS 和 DNS-SD 进行反向 DNS 查找)

我有一个服务器应用程序在 LAN 上的设备上运行,可通过 DNS-SD(即 Zeroconf/Bonjour/Avahi)发现。也在 LAN 上的客户端设备连接到此服务器。我无法控制使用什么应用程序连接到我的服务器应用程序,但我知道他们很可能使用 DNS-SD 和 mDNS 来发现并连接到服务器。仅在给定 C 或 C++ 中的 IP 地址的情况下,如何检索标识这些客户端设备的链接本地域名​​?

根据RFC 6762 Multicast DNS - Section 4. Reverse Address Mapping :
"Like ".local.",IPv4 和 IPv6 反向映射域也被定义为链路本地...因为此域下的名称对应于 IPv4 链路-本地地址,本地链接是查找与这些名称有关的信息的最佳位置是合乎逻辑的。”

所以理论上,应该可以通过IP地址查找链接本地域名​​。有谁知道怎么做?也许我没有在正确的地方寻找,但我没有在 Bonjour 文档中看到对此的 API 调用。

0 投票
1 回答
4298 浏览

linux - 如何在 linux 和嵌入式 linux 上使用本地链接 (RNDIS) 设置 autoip

我试图弄清楚如何在 RNDIS Usb Gadget 上自动设置 zeroconfig 网络地址。

目前,当我插入设备时,我必须在设备上

在主机上我必须

他们都会得到一个 169.xxx 号码,我可以 ping,但有时它不起作用。该设备没有 NetworkManager,我们使用忙框启动,我认为这是一个可能的解决方案Static Host RNDIS IP by linux based USB Gadget device,但我更喜欢使用本地 ip。

很久以前,我有一些关于如何设置脚本以在接口可用时在 /etc/network/interfaces 中运行的一些模糊说明,但我很难再次找到它。

谢谢!

0 投票
0 回答
655 浏览

c# - 适用于 Windows 8 的 Zeroconf 库

我正在制作一个需要使用zeroconf library. 根据我的观察,其中有一些库,最值得信赖的一个是Mono.Zeroconf. 但是我似乎无法通过 NuGet 安装它,我收到一条错误消息,提示“无法安装 Mono.Zeroconf,因为它与解决方案中的任何项目都不兼容。”

“该包针对以下框架:.NETFramework, Version=v2.0”

.

Mono.Zeroconf 是否有任何有据可查的替代方案,或者我可以做些什么来使其在我的 Windows 8 应用程序上运行?

编辑:好的,我在这里尝试使用 zeroconf 库,但仅通过调用最简单的函数就会出错。当我打电话

我收到一条消息错误:

mscorlib.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理

WinRT 信息:套接字已经绑定到一个地址。

附加信息:在意外的时间调用了一个方法。

任何人都知道为什么会发生这种情况或如何解决?

提前致谢。

0 投票
1 回答
363 浏览

bonjour - 使用 zeroconf 区分多个服务的正确方法

我正在编写一个可以在电脑和手机上运行的软件。

该服务使用 HTTP API 进行通信,并将使用 Zeroconf 在本地网络上发布。

最初我使用_http._tcp.服务类型发布了我的服务,但我很快发现我的 NAS 和我的音乐接收器(!)也使用该确切的服务类型广播自己。

所以现在的问题是如何区分我的服务和其他使用 HTTP 的服务。

备择方案

使用不同的服务类型

这当然是最简单的方法,并且(几乎)保证不会使用其他服务。

但是,根据 Apple 1 ,新服务在 IANA 注册。这显然不是必需的,但看到他们推荐它,感觉这是错误的做法

使用 TXT 记录

Apple 2是这样描述 TXT 记录的:

注册服务时,会创建三个相关的 DNS 记录:服务 (SRV) 记录、指针 (PTR) 记录和文本 (TXT) 记录。TXT 记录包含解析或使用服务所需的其他数据,尽管它通常也是空的。

当然感觉这可能是正确的方法,但我仍然不确定,很难找到该字段应包含的内容的描述。

我的第一个想法是放置类似<service_name>-<version>which 的内容,然后对其进行解析以查看它实际上是哪个服务。

我的 NAS 似乎使用它来识别型号和版本号。

尝试与服务交谈

找到服务后,总是可以HEAD在已知端点上执行请求并查找服务设置的已知标头。

这感觉像是一种相当缓慢的方法,谁知道HEAD向我的接收者发出请求会做什么。


需要明确的是,这个问题与特定的语言或框架无关,它与 zeroconf 的概念有关。

我可以显示一些代码,但我看不出这有什么帮助。

0 投票
0 回答
1374 浏览

c# - 有没有办法检测 Windows Phone 本地网络中的 bonjour/mdns/zeroconf/任何服务

在 WPF 应用程序中,我可以添加对Bonjour 1.0因此我能够检测本地网络中的 bonjour 服务的引用。在 Windows Phone 应用程序中,我看不到对 Bonjour 的引用。如何处理?

我的问题是我想在 Windows Phone 手机可以检测到(ip 和端口)的 PC 上创建/广播服务。两者(PC 和 Cell)都在同一个本地网络(一个路由器)中。

0 投票
1 回答
957 浏览

java - JmDNS 设备移除检测

我正在尝试使用 JmDNS 来检测网络上设备的添加和删除。添加工作正常,只要在 JmDNS 中注册了它们各自的服务就会找到这些设备,但是,当从网络中删除设备时,它永远不会在 JmDNS 中注册。

我曾尝试定期调用jmDns.list(serviceName),但似乎它总是返回缓存值。

是否可以让 JmDNS 注册已删除的设备?

这是我用来注册服务和服务监听器的代码(仅相关部分):

服务:

服务监听器:

永远不会调用方法serviceRemoved(),即使之前注册的设备不再通电。我非常感谢在解决问题方面能提供的任何帮助。

更新:JmDNS 确实发现该设备从网络中丢失,但仅在半小时后。有没有可能缩短这个时间?

0 投票
0 回答
760 浏览

ios - iOS bonjour 浏览器不可靠

我正在使用 Xamarin(前 Mono Touch)的 NSNetServiceBrowser 来扫描 bonjour 设备。这在大多数情况下都有效,但似乎有

a) 一个大的缓存问题,它没有意识到有新设备 b) WIFI 有问题,例如当我关闭 wifi 并重新打开它时

大多数时候,可以找到 Apple Bonjour 设备,但在 a) 或 b) 的情况下很少显示基于 avahi 的设备(网络打印机)。

顺便说一下,我知道iOS 上的 NSNetServiceBrowser/Bonjour 问题

0 投票
1 回答
363 浏览

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

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

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

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

我的主要疑问是:

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

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

这是我的代码片段:

0 投票
1 回答
1312 浏览

windows - 如何在没有 -remove 命令的情况下在 Windows 中刷新 mDNSResponder.exe

我有一个使用 mDNSResponder.exe 制作的客户端应用程序。mDNSResponder 在某些封闭的网络环境中,对从某些服务器硬件(如 DVR 或 ip-camera)的状态接收到的客户端程序的数据进行实时更新。

我只是尝试创建一种新方法,在使用 TCP 等其他通信协议从客户端更新状态后,客户端使用 mDNSResponder.exe 更新从服务器硬件接收到的状态。但是我遇到了一个问题,即 mDNSResponder.exe 无法使用另一个通信协议更新进程的反射状态。如我所见,mDNSResponder.exe 在更新时间和显示先前状态之间的间隔中存储了一些接收到的状态,而不是当前状态。

在这种情况下,“-remove”和“-install”命令没有帮助,因为其他应用程序也使用 mDNSResponder.exe。此操作将损害其他应用程序。

因此,在 Windows 操作系统(XP、7、8)中,我想在没有 -remove 命令的情况下找到重置(或刷新)mDNSResponder.exe。