问题标签 [nsd]

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 投票
0 回答
57 浏览

android - NSD 发现未在 Motog3 API 23 中找到任何内容

在进行 Nsd 发现时,我在 MotoG3(API 23)设备中出现了奇怪的行为。NsdManager 和库https://github.com/andriydruk/RxDNSSD的发现都没有发现任何服务。

我验证了设备连接到的网络中的服务可用。在装有 Android N 的设备上尝试同样的事情时,发现效果很好。最重要的是,这个发现以前有效,但突然停止工作。我认为网络中的某些东西可能已经改变,但我不知道它是什么。

还尝试在具有服务的另一个网络上进行搜索,在原始设备上运行良好。因此,网络的某些配置可能导致 MotoG3(API 23)中的发现找不到任何东西。无法确定是设备问题还是 API 问题,因为我没有具有相同 API 的不同设备来测试它。

为了验证这不是实施错误,我下载了 ZeroConf 浏览器,但它无法找到服务。

所以我的问题是:有谁知道这可能是什么原因,或者是否有任何解决方案使它起作用?

0 投票
1 回答
858 浏览

android - Android Pixel 2 (8.1) DNS 服务发现失败

观察 Pixel 2 中发现 iOT 设备服务的问题。

Nexus / Pixel 1 等其他设备中的 OS 8.1 可以毫无问题地找到 serviceType。

使用 NSD serviceDiscovery() ,日志显示服务发现已启动。但它没有找到服务(_customName._tcp。)

有人在使用 Pixel 2 设备时遇到过这样的问题吗?

0 投票
0 回答
917 浏览

android - Android NSD - 永远挂起/运行 - 特定于设备?

我正在尝试在我公司的专有硬件设备上执行服务发现,该设备托管自己的 WiFi 网络并通过该网络宣传 bonjour 服务。当我连接到那个 WiFi 网络时,我正在使用 NSD 来发现该服务并解决它。

代码非常简单,通常运行良好且快速。除了我有一个相当反复出现的问题(大约 10 次尝试中的 5 次)到目前为止本地化到我的三星 S8+。目前无法在 S6 或 Pixel XL 上重现。

问题是 DiscoveryListener 除了 onDiscoveryStarted() 之外从不做任何事情,它只是永远运行。如果我杀死该应用程序并重新开始,有时它会工作,有时它会继续挂起。

就像有一个阻塞的线程或其他东西,但日志中没有有用的信息(我可以找到),而且我还没有找到任何东西可以锁定,因为我可以做些什么来从中恢复。

我添加了一个超时,它将在 30 秒后停止侦听器,但通常当我在那之后重试时它仍然不起作用。

服务发现过程包含在一个 LiveData 中,它在活动时启动它。

听众很简单...

我无法在日志中找到太多有价值的东西,尽管当事情不工作时我确实看到了这条消息。试图寻找有关这个问题的答案的尝试并没有取得成果。

04-26 13:50:14.541 953-1218/? W//system/bin/netd:使用无效的 DNSServiceRef 0x72bb818000 FFFFFFFF DDDDDDDD 调用 dnssd_clientstub DNSServiceProcessResult

我还能提供哪些其他信息?

我已经在我的 S8+ 上使用 Andriy Druk 的 bonjour服务浏览器示例代码重现了这个问题,它甚至不使用 NSD ......所以看起来问题可能出在核心 mDNS 代码中,而不是特定于 Google 的 NSD 实现?

S8+ 上是否有一些系统软件或膨胀软件可能会干扰我对 NSD 或 mDNS 的使用 - 线程阻塞或其他什么?

0 投票
3 回答
3471 浏览

android - Android - Wifi Direct / p2p not able to find peers on Android 8

I started creating an Android app wifi Wifi direct functionality. I do a peer discover and I like to see the peers in a listview.

I now have a app which tries to discover peers and shows the peers in a list.

But I'm facing the problem that this works fine on my Android 5 device. Here I can see my Android 8 device, but not the other way around. I cannot see my Android 5 device on my Android 8 device.

I followed steps from here: https://developer.android.com/training/connect-devices-wirelessly/nsd

And also discovered this post: Android O issues with WiFi Peer Discovery which says that I need to ask for permissions before continuing.

My manifest:

What could be the problem? Maybe I can provide more information if needed to solve the problem?

0 投票
1 回答
611 浏览

android - 调用 resolveService 时,NSD 在 DiscoveryListener-callback 中缺少 NSDManager

我想在android设备之间交换数据,因此应该使用NSD来查找其他设备。我遵循了Android Developers上的示例

服务端成功在网络上注册服务,客户端设备识别服务并进入discoveryListener回调方法onServiceFound()。然后我初始化resolveListener并调用resolveService(),但是应用程序崩溃了

我的 mNsdManager 在 NSDFinder 类中不为空,但在 DiscoveryListener 的回调方法中不知何故为空。似乎我在使用不同的线程时遇到了问题,或者在使用上下文时存在误解。我的 NSDFinder 类应该扩展服务还是什么?我不希望主要活动中的 NSD 代码保持代码结构良好。


(缩短)主要活动

NSDFinder 类 (NSDFinder.java)

0 投票
1 回答
164 浏览

android - 网络服务发现:onServiceRegistered() 中的 NsdServiceInfo 为空 - RegistrationListener 的回调

当我按照android 开发人员的指南注册服务时,NsdServiceInfo-Object 不包含注册服务后应包含的所有信息。

因此,当onServiceRegistered()触发 -callback 时(仅当服务已成功注册时才应该如此),日志消息会显示:

因此,对于插入的注册,类型 (-http.-tcp.) 已删除,并且_NsdServiceInfo. 这不可能是正确的。

这发生在具有各种 android 版本的各种设备上。

有人对此有解释吗?

0 投票
2 回答
9308 浏览

java - 如何准确扫描android中所有连接到wifi的设备的IP和Mac地址?

嗨,我正在尝试从 android 查找连接到我的 WIFI 路由器的所有设备,我需要每个设备(包括 iOT 设备)的设备 Mac 地址和本地 IP 地址,现在,我正在尝试从 ARP 缓存表中查找。但有时在扫描中缺少一些设备,它不是那么准确。

我的代码:


如何准确扫描android中的所有设备(IP地址和Mac地址)。


0 投票
0 回答
552 浏览

android - Android 网络服务发现获取主机名 (mDNS/Zeroconf)

我正在尝试从使用 mDNS/Zeroconf 在我的本地网络上做广告的服务中获取主机名。我正在使用 Android 的网络服务发现 API,但似乎 Android 不使用广告主机名,而是尝试进行反向 DNS 查找,如果失败仅返回 IP 地址。

在我的 Macbook 上,我可以执行以下操作:

$ dns-sd -B _myservice._tcp DATE: ---Mon 29 Oct 2018--- 17:35:25.332 ...STARTING... Timestamp A/R Flags if Domain Service Type Instance Name 17:35:25.333 Add 2 10 local. _myservice._tcp. My Service Name

$ dns-sd -L "My Service Name" _myservice._tcp DATE: ---Mon 29 Oct 2018--- 17:38:35.423 ...STARTING... 17:38:35.423 My\032Service\032Name._myservice._tcp.local. can be reached at test.my.service.local.:443 (interface 10)

然后我可以使用返回的主机名 ( test.my.service.local) 来查找相应的 IP。我已经在 iOS 上使用NSNetServiceBrowser.

onServiceDiscovered如果我执行以下操作,则 在我的 Android 上:private static Map<String, Object> OnServiceDiscovered(NsdServiceInfo info) { Log.d(TAG, info.getHost().getHostAddress()); Log.d(TAG, info.getHost().getHostName()); }

我确实得到了正确的 IP 地址,但 getHostName 返回“raspberrypi.local”(来自 /etc/hostname)或在另一个网络上只返回 IP 地址。我的怀疑是,在 Android 上 getHost().getHostName() 正在执行反向 DNS 查找,并完全忽略了使用 mDNS 通告的主机名。

有没有办法从 Android 上的 mDNS 获取主机名?

0 投票
1 回答
1091 浏览

java - Android NSD:为什么服务类型不匹配

我创建了一个应用程序来测试 android 上的网络服务发现 (NSD)。

失败的场景

运行应用程序的两台设备。我在第一台设备上点击了注册,在看到确认注册的祝酒词后,我在另一台设备上点击了发现

该服务由第二台设备发现,但其类型为 unknown。从调试中我看到未知的服务类型是

但是当服务注册时,类型设置为

我不相信我做过改变服务类型的事情。这是活动:

这是布局:

0 投票
0 回答
226 浏览

android - NsdManager 从未在 Google Pixel 3 (Pie) 上发现任何服务

相同的代码适用于三星 S8 和索尼 XZ,但不适用于 Google Pixel 3。

我从 NsdManager 开始发现:

discoveryListener 提供与指定的相同 serviceType 的 onDiscoveryStarted 回调。我和我的服务坐在同一个 wifi 上,我等着等,但没有 onServiceFound 回调来。在三星 S8 和索尼 XZ 上开始发现后,onServiceFound 回调会出现毫秒。

Google Pixel 3 的 NsdManager 是否存在任何已知问题?