问题标签 [dns-sd]

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

ios - Windows dns-sd (Bonjour/ZeroConf) 没有通过 USB 发现 iPhone 服务

我有一个 Bonjour _http._tcp。在 iPhone 上发布的服务。在 iPhone Wifi关闭的情况下;在 MacBook 的终端上运行以下 dns-sd 命令:

dns-sd -B _services._dns-sd._udp

然后用 USB Lighting 电缆将 iPhone 连接到 MacBook,dns-sd 会发现以下 iPhone 服务:

从 MacBook 上断开 USB Lighting 电缆会显示:

但是,在 Windows 10 PC 上重复上述步骤(运行 dns-sd,连接和断开 USB Lighting 到 PC),dns-sd没有发现该服务。

使用 iPhone Wifi On,PC 上的 dns-sd 会发现 iPhone 服务:

当 iPhone Wifi 关闭时,PC 上的 dns-sd 会显示:

我从https://developer.apple.com/download/more/?=Bonjour%20SDK%20for%20Windows; 安装了 Bonjour SDK v333.10;并且 iTunes 在 PC 上也可以正常工作(可以显示 iPhone)。

为什么 PC 上的 dns-sd (Bonjour/ZeroConf) 没有通过 USB 发现 iPhone 服务?

非常感谢。

0 投票
2 回答
205 浏览

javascript - 客户端 javascript 上的 DNS-SD

是否可以使用一些 JS 库在客户端使用 DNS-SD发现服务(以便在客户端的本地网络上发现服务)?我在 npmjs.com 上找到了很多库,但它们都在 Node.js 上工作,而不是在客户端 JS 上工作。

0 投票
1 回答
94 浏览

macos - dns-sd注册被接受后没有出现在浏览中

我在 MacOS Catalina 上的 docker 容器中运行家庭助理,需要允许 HomeKit 与之交互。我正在尝试使用 dns-sd 注册服务,以使其根据问题线程中推荐的修复程序工作。注册有效,但如果我理解正确,之后服务不会出现。

我先输入:

我立即得到一份服务清单。这些物品是我的以太网连接相机。然后我输入:

我得到回应:

Control+C退出并重新进入 dns-sd B. 该命令挂起几分钟并在注册之前显示相同的列表。是否应该使用 B 命令显示已注册的项目?

此外,在我看来,命令中的 Homeassistant 需要对应于实际服务。我如何验证它们是否匹配?当我运行 docker ps 我得到:

这是我应该匹配的吗?由于 macOS 不区分大小写,因此它们应该匹配。

0 投票
0 回答
88 浏览

javascript - 有没有办法在 MVC 应用程序中从客户端 LAN(使用 Javascript)获取连接的扫描仪列表?

我们正在开发一个MVC 应用程序,以从安装在 LAN 中的基于 twain direct 的扫描仪扫描文档。

为了发现连接的扫描仪,我们使用了 Bonjour,它公开了扫描仪列表。扫描器(直接 twain)还提供了 REST API 来创建与扫描器的会话、捕获数据等。

此解决方案的局限性在于,它必须部署在连接扫描仪的同一 LAN 上。只有这样,我们才能使用 Bonjour (Dnssd) 获取扫描仪列表。

现在,我们想以某种方式修改解决方案,以便应用程序应该部署在 LAN 之外,并且能够获取正在访问应用程序的 LAN 的可用扫描仪列表(在浏览器中)。

我们尝试了一个包“ https://www.npmjs.com/package/bonjour ”,但它似乎是一个服务器端库。我们还使用 browserfy 为 javascript 制作了 bundle.js,但没有成功。

如果我们可以获取客户端局域网中的扫描仪列表,我们将能够使用带有选定扫描仪的 rest api 来执行其余的扫描任务。

注意:在预期的 LAN 上可能没有任何 PC(可能只有 ipad/android/iphone 和扫描仪)来安装任何其他支持软件以公开扫描仪列表。

谢谢

0 投票
1 回答
191 浏览

multicast - OPC UA 组播发现

我是 OPC UA 的初学者,正在探索规范第 12 部分中提到的发现机制。我有几个疑问。

  1. 在组播扩展发现中,服务器向其本地发现服务器(LDS ME)注册,当客户端向其LDS-ME注册时,客户端LDS-ME发出组播探测,服务器端LDS-ME响应带有公告,从而允许客户端知道网络中的服务器列表。我的问题是,为什么这个过程被称为多播探测和多播公告。因为根据 mDNS 规范,探测和公告最初用于确保资源记录的唯一所有权。任何人都可以告诉我为什么它被称为探测和宣布?

  2. 在 open62541 堆栈中,使用发现示例,运行 server_lds.c,我收到一条日志消息“多播 DNS:出站接口 0.0.0.0,这意味着使用了第一个操作系统接口(您可以使用显式设置接口) 'discovery.mdnsInterfaceIP' 配置参数)”。现在理论说多播 dns IP 应该是 224.0.0.251: 5353 为什么它被设置为 0.0.0.0?有人可以告诉我吗?

问候, 罗山

0 投票
0 回答
154 浏览

dns - 关于 Wireshark 上的 mDNS 观察

我是这里的初学者,想澄清一些事情。我的系统上运行着一个服务器 (OPC UA),规范说它使用 DNS SRV 记录在本地链接上宣布自己。在进行一些研究时,我发现 mDNS 与 DNS-SD 一起用于本地网络中的服务发现。mDNS 指定了探测和公告的术语。当我运行服务器时,我对wireshark日志的理解真的不一样。资源记录是否意味着服务的不同类型的记录(A、SRV、TXT、PTR)(_opcua-tcp._tcp.local?)

既然它应该是网络上的公告,那么它不应该是一个 SRV 查询,通过端口和主机信息通知服务名称吗?

当主机上只有单个主机和单个服务时,组播探测和宣布的含义是什么?

请告诉我。

附件是截图 在这里输入图片描述

0 投票
1 回答
130 浏览

ruby - 在“浏览”中:为 DNSSD::Service:Class 调用私有方法“新”(NoMethodError)

我在浏览 GitHub 时遇到了https://github.com/PeterCrozier/AirPrint并尝试了一下。它是几年前写的,所以可能是针对旧版本的 ruby​​。我在 macOS Big Sur 11.1 上使用 ruby​​ 2.6.3p62(2019-04-16 修订版 67580)[universal.x86_64-darwin20] 我对 ruby​​ 一无所知,但想看看我是否可以获得一些帮助以使其正常工作。

当我运行 airprintfix.rb 时,它会出现以下错误:

任何想法是什么导致了错误以及如何解决它?

谢谢!

吉姆

0 投票
0 回答
50 浏览

c++ - 有没有可靠的方法在 iOS / Android / Windows / Linux / macOS 中发现 LAN 中的微控制器?

我试图让 ESP8266 在作为接入点工作和连接到无线本地网络时都可用(用例是:用户是否带着设备离开家 - 它开始广播自己的 AP,在家时连接到可用网络)。

我正在寻找的是一种从浏览器(通过书签)访问设备的单一、可靠的方式——无论连接的 IP / 网络设备如何。

到目前为止我的发现:

  1. mDNS(Apple Bonjour,.local 域),将适用于除Android之外的大多数现代机器
  2. 根据路由器的固件,设置主机名可能会或可能不会起作用 - Android 上的 Chrome 可能会完全绕过这个并尝试使用 8.8.8.8 解决
  3. 只有当设备在 AP 模式下工作时,在 ESP8266 上设置常规 DNS 服务才有效
  4. DNS-SD 将需要客户端的某种客户端
  5. 无法在 JavaScript 中获取浏览器 IP

我的搜索技巧失败了。有没有办法让它发生?

0 投票
1 回答
273 浏览

winapi - 拔下网线时使用多播 DNS

我们正在开发一个客户端应用程序,它应该能够与可以在本地主机上或本地网络中的另一台计算机上运行的服务进行通信。我们成功使用Windows 10中的DnsServiceRegister(服务器)和DnsServiceBrowse(客户端)功能,即使服务器和客户端都运行在本地主机上,只要插入网线即可。但是,当拔下网线时,DnsServiceBrowse拒绝使用 ERROR_NO_NETWORK。有没有什么方法可以在不费力的情况下解决这个限制?DnsServiceRegister 似乎在没有网线的情况下也能正常工作,所以也许还有其他方法可以从客户端查询本地 DNS 缓存?

客户端代码:

我不认为它是相关的,但这里是服务注册的代码:

0 投票
0 回答
38 浏览

android - Android DNS-SD 支持 Subtypes?

NsdManager提供discoverServices(String serviceType, int protocolType, DiscoveryListener listener)寻找特殊serviceType服务的方法。但是好像没有提供找特殊Subtypes服务。我该如何实现这个功能?谢谢!