问题标签 [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 回答
538 浏览

android - Android NSD:模拟器上没有发生服务注册

我想通过模拟器应用注册一个 NSD 服务。模拟器在连接到本地网络的 linux ubuntu 机器上运行。

我按照此处列出的说明进行操作。

当我在我的 Nexus 设备上运行应用程序时,我可以注册服务。我已将 nexus 设备连接到同一本地网络。我正在使用avahi-browse --all命令来检查注册的服务。当我在 nexus 设备上运行应用程序后运行此命令时,我会获得新注册服务的条目。

下面是命令运行的输出:

这里的“NsdChatEmulator_3”是服务的名称。

但是当我在模拟器上运行同一个应用程序时,它正在运行但服务没有注册。

有人知道在模拟器上使用 NSD 有什么问题吗?

0 投票
1 回答
314 浏览

macos - 从 bash 中运行程序,无法正确转义空间

我正在 Mac OSX 10.11 上编写一个 bash 脚本,以便在我连接到我的 VPN 时自动使用 dns-sd 为 AFP、SMB 和一些打印机“代理”我的 Bonjour 广告。

我的脚本的基本要点是我声明了一些数组以供以后调用 dns-sd 时使用。我遇到困难的数组:

要确定我是否需要实际运行 dns-sd,我会:

测试 ifconfig 的返回值:

如果 ppp0 存在,我会遍历数组的长度,检查 dns-sd 当前是否正在运行,等等。

如果 dns-sd 实例一直在运行但 ppp0 现在不可用,我会通过保存的 PID 将它们全部杀死,并在几分钟后再次检查。

我相信我的其余代码正在执行我想要的,所以我会直接跳到有问题的行,希望总体思路足够清楚。

为清楚起见,dns-sd 的手册页显示这是 -P 的用法。

我面临的问题是最后三个 SERVICE_TEXTS 元素中空格字符的行为。到目前为止,故障排除一直是在终端中做所有事情,以确保我没有遗漏一些非常明显/发疯的东西。这正是我输入的内容以及返回的内容......哪个有效

但是,当我在命令中使用变量时(为清楚起见,回显)...发生这种情况

问题是元素4的部分

dns-sd 报告这是

您会注意到,当我只是键入字符串而不是使用变量时,dns-sd 会用一个“\”报告它。

显然四个“\”对我没有任何好处......如果我删除“\”,我仍然没有得到想要的结果,因为 dns-sd 认为我正在描述一个新密钥。我打字

尝试获取文字“\”,并且从内存中 dns-sd 仍然收到四个。

我也玩过单引号和双引号,包括在对 dns-sd 的调用中将变量括在双引号中,但这会在每个空格中添加反斜杠。这使得 dns-sd 将 TXT 字符串视为一键一值,其中值包含空格。这比不带引号调用它的用处要小得多,所以我放弃了进一步调查。

所以基本上,似乎 dns-sd 没有收到或收到四个“\”......它只需要一个然后一切都会完美运行......

调用 dns-sd 并传递不带引号的 ${SERVICE_TEXTS[$n]} 非常接近所需的行为,但无法处理键值对的“值”中的空格字符。

这里的任何指导将不胜感激!我一直在翻阅 bash 手册,搜索堆栈交换并尝试我能想到的一切以使这项工作持续 4 小时 :(

0 投票
0 回答
1232 浏览

android - wifidirect 在后台服务中多次发现相同的对等点

我一直在尝试发现多个对等点 - 在后台服务而不是活动中多次。大致基于此:http: //developer.android.com/training/connect-devices-wireless/nsd-wifi-direct.html

因为,一旦收到对等点的广告服务,如果该对等点离开并返回范围内,就不会再次出现。我需要重新发现相同的对等点的原因是我正在根据应用程序的使用情况更改 TXT 记录值。这需要重新通告,并且接收设备使用新值更新本地文件。

尽管如此,我还是设法让它以一种不可靠的方式工作。通过,删除 localservice 和 serviceRequest 并使用处理程序重新启动注册和发现。

但是,我注意到一些早期的广告被汇集起来,即使在广告设备停止广告的情况下也会继续显示,并且 TXT 监听器有时不会连接。这会在添加本地服务和服务发现请求时导致 WifiP2pManager 忽略警告。因此,收听者有时收不到广告,而有时甚至在禁用 Wifi 的情况下仍会收到广告。

以下是我的代码:

我也读过这个:在 Android WiFi Direct 服务发现中发送数据而不是连接

虽然,我理解使用多播 DNS 发现的不可靠性本质上是用于服务发现而不是消息传递场景。就我而言,记录值不会经常变化。但是,我需要确保广告和发现以及多个对等点发生时没有描述的不稳定行为。

非常感谢您对此的任何帮助!

谢谢!

阿纳布

0 投票
1 回答
75 浏览

ruby - 红宝石和卓悦

我是 ruby​​ 及其库的新手,但是如何将 DNSSD 和 TCPServer 结合在一起?

我知道我可以通过以下方式注册 DNSSD 服务

而且我可以通过这种方式为我的 TCPServer 创建 DNSSD 服务,但是如何指定主机名(服务名)如上?

我想广播我的服务器,以便客户端可以解析 DNSSD 服务并建立连接。

如果那是一个愚蠢的问题,请原谅我。

0 投票
0 回答
517 浏览

c# - 在 Windows.Networking.ServiceDiscovery.Dnssd API 上取消注册 DNS-SD 服务

我可以正确注册 DNS-SD 服务,但无法从本地网络取消注册 DNS-SD 服务。我试过用Dispose()方法关闭StreamSocketListener,但是不行。

注册服务的方法代码如下。任何人都可以帮我从本地网络中删除该服务

0 投票
0 回答
209 浏览

c# - DnssdServiceInstance 被多次创建

我在 UWP 应用程序中使用 DNSSD API。当我想使用 DnssdServiceInstance 广播 DNSSD 服务时,似乎创建了多个实例,即使我只调用了一次该方法:

当我在另一台电脑上使用设备观察程序时,观察程序会找到上述服务的多个实例,并继续将它们命名为 Username(1)、Username(2) 等。这是一个错误还是我遗漏了什么?

0 投票
1 回答
412 浏览

networking - DnssdServiceInstance 永远不会从网络中删除

我在 UWP 项目中使用 Windows.Networking.ServiceDiscovery.Dnssd API 来注册 DnssdServiceInstance 以使用以下代码在网络上广播:

该服务创建得很好,但从未从网络中删除。我一直在用我的 DeviceWatcher 查看所有创建的实例。即使将 StreamSocketListener 配置和设置为 null。

更新:重新启动创建服务的计算机时,所有创建的服务都消失了..但不是当创建服务的应用程序关闭时

API中没有提到服务删除。这是一个错误还是我错过了什么?

谢谢

0 投票
2 回答
2331 浏览

xmpp - 在 Swift 3 中重新定义模块“dnssd”

我最近将我的项目转换为 Swift 3 并且还安装了 XMPP 框架。
当我运行项目时,出现错误“模块'dnssd'的重新定义”。这是我的版本swift 2的代码...

}

它会自动转换为swift 3

当我尝试编辑某些内容时,它显示错误“编辑此文件的权限被拒绝。
请帮助我如何解决这个问题。

0 投票
0 回答
383 浏览

c++ - Apple Bonjour 服务绑定到本地主机

我有一个绑定到的 TCP 套接字127.0.0.1,我想让它作为本地机器上的服务可用。然而问题是 Bonjour 使用 DHCP 地址而不是 localhost,即使kDNSServiceInterfaceIndexLocalOnly设置为接口也是如此。这使我无法实际连接到套接字。

那么如何使服务解析为127.0.0.1而不是192.168.xxx.xxx

我在 C++ 中使用适用于 windows 的最新 bonjour SDK,尽管它应该在所有操作系统上都一样。

目前我只使用以下函数调用来注册服务:

我尝试将"127.0.0.1"其作为主机名而不是nullptr.

0 投票
2 回答
1922 浏览

wifi - 使用 dns-sd 进行服务发现

我有一个配置为工作站模式的设备。设备通过智能手机提供的热点连接到智能手机。设备需要搜索智能手机上的应用程序发布的服务,比如_abc._tcp。

我正在使用命令dns-sd -B _abc._tcp但没有输出。请指导我可能缺少的内容。

应用程序发布服务。我在 android 上使用 Bonjour 应用程序对其进行了验证。

还请澄清

  1. 是否可以在站模式下发现服务。
  2. 搜索服务时需要提供完整的服务名称。如果不是我们如何发现智能手机上发布的所有服务
  3. 设备上的防火墙设置会影响服务发现吗?
  4. 我们如何在 C++ 中实现相同的目标。任何可以帮助发现的图书馆。

谢谢是提前。