问题标签 [mdns]

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

windows - Windows 7 无线服务未按预期工作

我有一个问题,我希望你们能帮助我解决...

我使用我们为 IE 创建的插件...它检测网络上的设备...设备是我们自己创建的...现在这个插件可以正常工作并在与我们的以太网连接时检测设备XP 和 Windows 7 中的子网...当它通过 Windows XP 中的子网无线连接时,它会检测设备...但是当我通过 Windows 7 将它与我的无线子网连接时,它会停止发现设备...那一刻我启用了我的 LAN,它再次检测到设备......它在这部分的行为非常奇怪,我不能确定 Windows 7 对此负责,但必须考虑......似乎有无线安全影响它但是现在没有关闭这样的证据......

我不完全了解插件代码,但它通过网络使用 mDNSresponder 服务......

我使用 Windows 7 64 位操作系统和 Internet Explorer 9... 已在 Windows 7 32 位和 IE 版本 8 和 9 上进行了测试,结果相同... Windows 防火墙已打开/关闭为好...

抱歉,如果我发错了帖子,请原谅我的任何不一致之处...感谢您的帮助...谢谢...

EDIT-1:该插件是用 C++ 构建的,我也可以给你它的代码,但关键是它不涉及这里......这似乎是 Windows 7 中无线的问题......我使用 Wireshark 通过网络嗅探数据包,发现在有线网络中运行时,我可以看到通过 MDNS 协议的请求和响应......但是当我切换到无线网络时,没有通过 MDNS 的请求或响应,因此没有仅通过网络发送的查询...好像当我连接到无线网络时,某些东西阻止了插件查询网络...如果可能,请帮助我...非常感谢...

0 投票
1 回答
944 浏览

mdns - 如何在 mDNS 中发现子类型

我正在尝试根据子类型进行发现。例如:如果我使用 avahi-publish 注册服务,

avahi-publish -s --domain="local" --subtype="_annon._sub._http._tcp" "ServiceName" "_http._tcp" 80 "TxtRecord=Some Text"

我需要根据子类型“_annon._sub”进行服务发现。有没有办法做到这一点?

0 投票
1 回答
964 浏览

c# - 读取 DNS(mDNS) 响应

对于一个项目,我必须阅读 mDNS 响应。

我阅读了 IETF 文档(和 tcpguide,其中包含很多架构),我认为我尊重它们,但我有一个问题。

我经常尝试读取我的流,但流对于我要读取的数据来说太短了。

我有几个案例,我想我错过了一些东西。

一个具体的例子:我收到了这个(我做了一个小的“响应解析器”来查看我收到的内容并“解码”它:

我不明白为什么我这里没有足够的数据。截断位设置为假,所以我应该在这个数据包中包含所有数据,01101100实际上意味着大小为 108,而我这里只有 ~75 个字节。那么我做错了什么?这个问题似乎主要发生在包含答案的数据包中。

0 投票
1 回答
198 浏览

dns - DNSCMD命令生成的dns文件的编码格式是什么

我的 DNS 区域中有一些 Unicode Host A 记录名称(如 abcáxyz)。当我使用 dnscmd /zoneexport 时,它会创建一个区域文件。当我在记事本或任何文本编辑器中打开此文件时,它会显示记录名称为 abc\303\241xyz。我想通过程序读取这个文件,我想知道 dnscmd 在写入文件时使用哪种类型的编码来将此类(á)字符表示为 \303\241。

我尝试使用以下编码格式

ISO-8859-1、ISO-8859-15、ISO-8859-9、windows-1252、windows-1254。一切都为我工作,但我不确定使用哪一个。

0 投票
3 回答
1034 浏览

google-chrome-extension - Chrome 套接字 API 在 Chrome 操作系统上的行为不同(与 Ubuntu、Windows 相比)?

我有一个示例 Chrome 打包应用程序,它使用 Chrome 套接字 API 来执行 DNS 服务发现。繁重的工作是从此处的示例中借用的:

https://github.com/GoogleChrome/chrome-app-samples/tree/master/mdns-browser

我只是使用服务名称,例如_pdl-datastream._tcp.local(而不是默认的_services._dns-sd._udp.local)。

在我的 Ubuntu 和 Windows 设置(Chrome 25.0.1364.172)上,该应用程序可以成功找到我的网络打印机;我可以列出它的 IP 地址和服务实例名称。但是,它在我的三星 Chromebook (Chrome 25.0.1364.173) 上的 Chrome OS 中失败;什么也没找到。

知道问题可能是什么吗?这是一个已知的问题?

0 投票
2 回答
583 浏览

ruby - 在 Ruby 中,如何反向 dns 查找 zeroconf/bonjour 计算机的主机名?

两者都不

也不

似乎可以识别本地子网上使用 zeroconf/bonjour 的主机。我需要在给定 IP 地址的本地子网上找到 zeroconf 计算机的主机名。

0 投票
1 回答
1711 浏览

node.js - 在树莓派上的 node.js 上运行 node_mdns 时出现未知错误

我一直在尝试使用 express 创建一个 node.js 应用程序,该应用程序在网络上进行一些 ZeroConf 发现并在 Raspberry Pi 上运行。虽然该应用程序在我的开发机器上运行良好,但在 Raspberry Pi 上运行它时出现错误。

树莓派正在运行节点 0.10.5,并且 node_mdns 作为包来执行 zeroconf 发现。node_mdns 安装页面上提到的所有必需库都已安装并且是最新的。

该应用程序正确启动,但是当发现设备时出现以下错误。

这似乎不是网络问题,因为它只发生在树莓派上,而不发生在网络中的其他设备上。

如果有人遇到同样的问题并设法解决它,将不胜感激。

0 投票
1 回答
4511 浏览

dns - 转储 Avahi & Bonjour、DNS-SD 区域文件

我希望改进 mDNS 的 Go 库:https ://github.com/davecheney/mdns/

我和作者谈过,他只是说“我把它弄到了对我有用的地步”,这很好,完全符合开源精神。

他提到了 Avahi、Bonjour 和 dns-sd 发现工具无法找到他导出的服务的一些互操作性问题。

我希望了解 Avahi 在使用端口和简单名称进行简单服务时发布的记录。

我曾期望一个合适的版本:

可能有 Avahi 导出它的区域,但它对我不起作用(提示“你做错了”!) - 我想了解典型 Avahi 服务导出的最少记录,并从自动检查相同从我笔记本上的 Apple 实现中导出Lee-Hambleys-Macbook.local,我可能能够改进对 mDNS 的 Go lang 支持。

当其他人使用 Avahi/Bonjour/mDNS 时,他们使用什么工具来挖掘并检查事情是否按预期工作?

#avahi 的好心人很友好地给了我以下提示:

这会导致avahi-daemon将其区域文件转储到syslog.

但理想情况下,我想知道如何最好地查询服务器,tcpdump看起来也很有希望,但它仍然只显示被查找的记录,而不是区域中所有内容的完整转储:

0 投票
2 回答
826 浏览

windows - Bonjour DNS-SD 回调没有被调用,我的代码哪里出错了?

我正在尝试使用这篇博客文章作为参考来学习如何使用 Bonjour:

http://marknelson.us/2011/10/25/dns-service-discovery-on-windows/

我已经下载了链接在该页面底部的示例项目,它就像魅力一样。现在我试图在我的控制台应用程序中从头开始重现服务发现:

DNSServiceBrowse返回kDNSServiceErr_NoError,但从不调用回调。怎么了?

0 投票
4 回答
1588 浏览

macos - 如何找出我的多播 (Bonjour) 主机名?

我已经使用 Bonjour API 注册了一条记录。现在我想知道我刚刚发布的记录的内容。我通过指定一个 NULL 主机名来创建它,意思是“使用守护程序的默认值”,但我找不到一个简单的方法来查询它是什么!

使用 avahi,这很容易:我调用avahi_client_get_host_name()以获取机器主机名的起始值。

对于 avahi 和 Bonjour,SRV 记录的值可以在注册的生命周期内更改 - 如果注册是使用 NULL 主机名完成的,则记录的主机名会在必要时自动更新。我在这里想要的只是一种在我执行注册时获取主机名初始值的方法。

请注意,在我的 Snow Leopard 测试机器上,默认的多播主机名来自gethostname(2).

我能想到的四个解决方案:

  1. 在我的过程中获取主机名。它可能在某个地方。我strings(3)对我的进程的内存转储进行了搜索,并在我的地址空间中找到了四个多播主机名实例,但这可能是巧合,因为该名称用于其他用途。即使我所追求的字符串在我的进程中的某个地方,我也找不到一个 API 来理​​智地检索它。
  2. 从守护进程查询主机名。可能有一些查询我可以通过 mach 端口发送到获取它的守护进程?我再也找不到 API 了。相关的代码块在 mDNSResponder 的 uDNS.c 文件中,并且似乎没有通过 RPC 接口公开。
  3. 我可以查找我注册的服务。不过,这可能会涉及一些网络流量,所以除非有一些保证不会发生,否则我不愿意这样做。
  4. 重新实现 uDNS.c 中的逻辑。它从以下组合中获取机器的主机名:

    • 动态 DNS 配置
    • 静态配置的多播主机名
    • 反向查找主接口的 IPv4 地址
    • 它特别不使用gethostname(2)或等效

    重新实现该逻辑似乎是不可行的。

目前,我倾向于进行查找以获取初始 SRV 注册的值,但这似乎并不理想。什么是正确的解决方案?