问题标签 [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 投票
1 回答
225 浏览

android - 通过 getSystemService 请求 NSD_SERVICE 时应用程序无响应

我们的一些用户在启动时遇到 ANR。查看 Play Store 中的报告,我们的应用调用时似乎会发生这种情况:

阅读文档我不明白这怎么会失败。

一旦进入此模式,应用程序将在手机重新启动之前不会启动。我只设法重现了一次问题,但是当它发生时,Logcat 正在报告来自 NsdService 的错误

这让我觉得 NSD 系统服务本身状态不佳。

我的问题是我怎么能让 NsdService 处于这种状态,其次,我怎样才能恢复它?

如果有帮助,Play Store 上的报告仅适用于 Android 8 和 8.1,并且日志提供以下信息:

0 投票
0 回答
587 浏览

android - 网络服务发现 错误的 IP 已解决

我想通过网络服务发现连接多个 Android 设备。我想使用星型拓扑。等等设备应该发现和其他人注册一个应该由发现者发现的服务。为此,我使用了 NSD Chat ( https://github.com/gauravcanon/NsdChat ) NsdHelper 并仅对其进行了一些更改,因此在解决建立连接的服务后会调用回调。如果我使用三个设备,这主要适用。两个广告商和一个发现者。服务得到解决并建立连接。如果我再获得第三个广告商,它会在 80% 的尝试中崩溃。onServiceResolved原因是在函数中传递的serviceInfoResolveListener包含解析电话的 IP 地址,而不是广告电话的 IP 地址。端口正确,服务名称也正确。这是一种奇怪的行为,我不知道如何调试它。我正在使用 bonjour 浏览器查看所有注册的服务,并且所有服务的注册都很好。所有包含正确 IP 地址和端口的服务信息。我还尝试了不建立连接的纯发现过程。同样的失败。有时解析器的 IP 地址在 serviceinfo 中。它也可能发生在第一次发现和第二次发现中,但很可能发生在第三次发现中。我将在下面发布我的 NsdHelper 代码。我现在进行了一些编辑,因为我在解决后尝试再次启动发现过程,因此与 NSD Chat 存在更多差异,但错误仍然存​​在。有人通过 NSDManager 在多个设备上使用 Android 的 NSD 实现吗?它对你有用吗?你在做什么不同?这个话题是相关的,有人遇到了同样的问题(Android、NSD/DNS-SD:NsdManager 不可靠的发现和 IP 解析)。我无法想象这个错误仍然是3年前的事情?

我感谢每一个提示!

}

0 投票
0 回答
90 浏览

java - 在运行应用程序期间,当应用程序从 AirPlane 模式返回到 Wifi 时,网络服务发现不工作

我遇到了与网络服务发现相关的问题。

当我在连接了 wifi 的情况下启动应用程序时,NSD 可以很好地发现服务并顺利解决它们。但是,当我们连接 wifi,禁用 wifi 或从飞行模式切换 wifi 后,就会出现问题。

它只是卡在上面DiscoveryStarted,永远不会从那里继续,尽管它在关闭飞行模式后建立了与 wifi 路由器的连接。

在代码中,我还确保只有在确保 wifi 连接时才会开始发现,但运气不好。

现在我必须杀死应用程序才能让 NSD 正常工作。

我正在使用来自 Google Gist 的 NSD Helper:

https://android.googlesource.com/platform/development/+/master/samples/training/NsdChat/src/com/example/android/nsdchat/NsdHelper.java

0 投票
0 回答
374 浏览

java - Android NSD:registerService 返回端口 0 和 Host null

我正在尝试通过网络中的网络服务发现 API (NSD) 连接两个 Android 设备。在实施过程中,我关注了官方的 Android 网页。其中一台设备充当服务器,另一台充当客户端。我向网络询问下一个空闲端口。但是只要我通过 registerService(nsdsInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener) 在网络中注册服务器,nsdsInfo 中的参数就是空的。因此,在调用这行代码之前,nsdsInfo 对象包含正确的端口和正确的主机等。在调用此方法后,监听器 onServiceRegistered() 中的回调方法包含 Port = 0 和 Host = null。

是否有任何猜测为什么在注册过程中端口和主机名丢失但注册仍然成功?另一方面,即使触发了注册回调“onServiceRegistrered()”,其他设备也无法发现服务器。

提前谢谢各位!

0 投票
0 回答
58 浏览

java - 找不到符号变量 NSD_SERVICE

我正在尝试运行以下代码:

但是在构建它时抱怨“找不到符号变量 NSD_SERVICE”

试图进行干净的构建,使缓存无效并重新启动。

任何帮助都会得到帮助

0 投票
0 回答
107 浏览

java - 安卓 NSD。尝试解决时出现错误

我正在使用本地网络多人游戏进行 android 测验,主机应该向所有客户端发送消息。我正在使用这个NsdChat 示例。但是当我尝试重新爱上服务时,我得到了这个错误。

这是我的决心听众。

0 投票
0 回答
39 浏览

android - 如何将 NSD 结果放在 Android 中的 listview 适配器中

我使用网络发现服务来查找网络中的特定设备服务。我设法获得了带有 IP 地址、端口、服务类型和名称的设备,我想把这些信息放在列表视图中,有人能推荐我怎么做吗?

MainActivity.java

公共类 MainActivity 扩展 AppCompatActivity {

activity_main.xml

0 投票
0 回答
275 浏览

java - 仅显示服务名称 NSD 网络服务发现 Android

我再次有这个关于 NSD 的问题,这次我想问一下是否有人知道如何只显示服务名称而不显示端口、主机、服务类型等所有详细信息。到目前为止,我设法使用 ArrayList 和 NsdServiceInfo 对象显示所有服务它显示了我之前提到的有关服务的所有详细信息,但就我而言,我只想显示服务名称。

如果您有任何想法,非常欢迎您与我分享

0 投票
1 回答
77 浏览

android - setText() 在屏幕上显示文本“null”,但日志使用自定义数组适配器显示值

我再次遇到了我的应用程序的问题。我使用NSDAPI 来发现和连接服务,并使用数组adapter来获取有关服务的数据,例如 IP 地址和服务名称,并将其打印在应用程序屏幕上。到目前为止,我在显示服务名称时没有任何问题,但我不能不显示服务的 IP 地址。但是,当我将它记录到日志时,我可以打印 IP 地址,如果我打开应用程序而不是 IP 地址,它会显示文本“null”。

有人对此有任何建议或经验吗?

这是 MainActivity.java

这是我的ArrayAdapter

这是日志

我的日志

这是我的应用程序屏幕

带有列表的应用程序屏幕

0 投票
0 回答
178 浏览

java - 将数据从 java 内置类存储到自定义类

我有一个任务,我使用 NsdServiceInfo 类获取有关服务的信息,例如服务名称、主机、端口、IP 地址并在自定义数组适配器中显示一些,但是我从 NsdServiceInfo 获得的信息还不够,我需要显示我正在连接的设备的型号类型和状态,因为我正在使用个人协议连接 http 服务器。

到目前为止,我只在屏幕上显示服务名称和 IP 地址,因为我只能使用 NsdServiceInfo 类访问这些信息。对于模型类型和状态,我想创建单独的类并将 NsdServiceInfo 中的所有信息存储到该自定义类中,但我不确定如何做到这一点,或者它是否是正确的方法。到目前为止,我已经创建了自定义类并修改了自定义适配器,但是当涉及到更改主要活动时,我迷失了。

如果您有任何想法,请与我分享:)

PrinterNew.java 自定义类

NsdServiceInfoAdapter.java 我的自定义数组适配器(对不起,我只是在玩代码,还不想重命名类)

}

MainActivity.java