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

android - 通过 Wi-Fi P2P 使用网络服务发现时无法连接到 Android 设备

每个人!我正在开发一个 Android 应用程序,允许与附近已安装此应用程序的设备聊天。为了实现这一点,我正在使用 Wi-Fi P2P API 和网络服务发现来搜索附近的此类设备。我已经编写了用于在服务启动的线程中搜索附近设备的代码。当检测到设备时,Service 将其(通过广播意图)发送到显示目前检测到的设备的 Activity。检测到的设备被添加到 recyclerView 中,当用户按下其中一个时,必须建立与此类设备的连接。Wi-Fi Direct 连接建立成功(即 WifiP2pManager.connect() 方法成功)并捕获 WIFI_P2P_CONNECTION_CHANGED_ACTION。在广播接收器中,当这样的广播意图被捕获时,

使用 requestConnectionInfo() 方法,我可以获得有关连接的更多信息,例如我尝试连接的设备的 IP 地址。为了获取此类信息,我为该方法提供了 WifiP2pManager.ConnectionInfoListener 的实现,由 connectionInfoListener 变量表示。这是我实现 WifiP2pManager.ConnectionInfoListener 的代码:

“设备”是我的 BroadcastReceiver 实现的一个实例变量,现在并不重要。相反,重要的是 ConnectThread 线程。这是处理连接两个设备之间的套接字所需代码的线程。当我尝试连接到检测到的设备时,ConnectThread 在其 run() 方法中创建一个新的 ChatConnection 实例,将先前获得的 IP 地址和端口号传递给此构造函数:

这就是问题发生的地方。当我在我的物理设备上测试我的应用程序时,我得到的只是这个异常:

当然,我也在第二个物理设备上安装了我的应用程序,它被成功检测到并且 Wi-Fi Direct 连接成功建立。但是,当谈到这行代码时:

抛出异常......我为这个问题的长度道歉,但我想尽可能清楚。我真的提前感谢您的帮助。

编辑:我忘了提及初始化 ServerSocket 的代码。
ServerSocket 在启用 Wi-Fi 后立即启动的线程中进行初始化。
也就是说,当 WifiP2pBroadcastReceiver(扩展 BroadcastReceiver 的应用服务的内部类)捕获 WIFI_P2P_STATE_CHANGED_ACTION 意图时,它会检查 Wi-Fi 是否启用,如果启用,它会启动 ServerSocket 所在的线程:

ServerSocket 在 NsdProviderThread 的 run() 方法中初始化:

“server”是 NsdProviderThread 的一个实例变量,声明为 ServerSocket。

0 投票
0 回答
509 浏览

java - 使用 IPv6 的 Android 网络服务发现

我开发了一个新的安卓应用程序。这个应用程序创建一个热点网络和一个服务。但有一个问题。在网络发现服务的客户端解析我的 android 应用程序的 IPv6 地址,因此客户端无法通过 tcp 套接字连接到我的服务。

我的问题是

  1. 有没有办法将 IPv4 地址发送到网络服务发现客户端?
  2. 或者有没有办法在客户端创建与 IPv6 地址的套接字连接?

注意:我的安卓设备版本高于安卓5.0.1

0 投票
1 回答
343 浏览

android - 通过 NsdManager 发现的打印机如何添加到 PrintService?

我正在尝试实现 PrintService。我正在使用网络服务发现 (NSD) 来查找打印机(参见https://developer.android.com/training/connect-devices-wireless/nsd.html等)NsdManager.DiscoveryListenerNsdManager.ResolveListener进行异步调用。但是,系统会在调用onStartPrinterDiscovery()NSD 函数之前调用 my 。我没有看到任何其他机会打电话addPrinters()

这怎么行?

0 投票
0 回答
204 浏览

android - 服务注册如何与 NsdManager 一起工作?

我刚刚开始使用适用于 Android 的 NSDManager 类来处理多播 DNS。我从这个链接https://android.googlesource.com/platform/development/+/master/samples/training/NsdChat/src/com/example/android/nsdchat/NsdHelper.java找到了 NsdChat 示例。在这段代码中,注册服务似乎很简单,但我想了解它的底层工作机制,我在任何地方都找不到信息。

如果有人对此有经验并可以向我解释,将不胜感激。这些是我现在能想到的主要问题。

1) 当 registerService() 被调用时,应用程序在向谁注册这个服务?

2) 注册流程是什么?名称和端口等信息是否像 DNS 一样存储在查找表中的某个位置?

3)如果有人有一个图表来解释它是如何工作的,那就太棒了。

先感谢您。

0 投票
1 回答
88 浏览

android - 如何使用以前的客户端端口和 IP 与服务器重新连接客户端

我正在使用 NSD(Network service disovery) 在 Android 中创建一个聊天应用程序。
我的问题是如何使用以前的客户端 IP 和端口重新连接客户端。
示例:客户端第一次连接到服务器时的 IP 和端口
端口:52354
IP:110.100.92.187
假设如果以某种方式丢失连接,那么我可以重新连接到具有相同 IP 和端口的服务器,即端口:52354
IP:110.100.92.187
或任何其他使代码可靠以使其不会断开连接的方法?请记住,我将 NSD 用于本地网络(本地 wifi 网络和热点)而不是用于互联网。
对此问题的任何其他更好的解决方案都是最受欢迎的。

0 投票
1 回答
171 浏览

android - Android NSDService 发现 onServiceResolved 得到错误的端口号

我在获取注册服务端口号时遇到问题。实际上我的应用程序注册了一个端口为xxxx(例如40206)的服务,并且注册成功了。在另一台设备上,当我注册发现以发现所有已注册的服务时,我成功地找到了该服务,主机名有效,但端口号错误,它总是返回端口 41。

任何帮助为什么会发生以及如何解决它?

0 投票
1 回答
218 浏览

android - 如何在网络服务发现中获取 InetAddress 列表?

嗨朋友们,我在 android 应用程序中使用 NETWROK SERVICE DISCOVERY 来查找服务类型“_dockset._tcp”。我已成功获取设备列表,但无法获取所有设备的 InetAddres 列表。我只得到第一个发现设备的 InetAdress,但我想要发现所有设备的 InetAdress。您将非常感谢您的帮助。我在用

我很困惑如何迭代 InetAddess

0 投票
1 回答
527 浏览

android - Android NSD:使用空服务类型注册

注册的结果不应该为空,这是我从logcat得到的,也是注册成功的回调。

一切都是空的,系统生成的端口46518,类型,txtrecord。

以下代码来自官方指南

0 投票
1 回答
5037 浏览

android - 使用wifi p2p创建组以连接多个设备

我想创建一个连接,其中一个设备将像服务器一样将一些数据流式传输到连接的设备,并且多个设备可以连接到接收数据的设备。

所以我做了一些研究,我知道我们可以使用网络服务发现和 WiFi 点对点来做到这一点,所以我已经建立了连接,我可以连接一个设备和流数据,但我想创建一个组连接多个设备,因此任何人的任何帮助都将不胜感激。

谢谢!

0 投票
1 回答
544 浏览

android - 在 NSD 中使用网络服务信息时显示 null

为了使用 NSDManager 类发现服务列表,我使用谷歌参考实现了一些代码,但是当我尝试发现服务时无法获取主机地址。发现开始时显示为空。我参考了此链接以发现连接在同一网络中的设备列表,我关注此博客以获取连接到同一网络时的所有服务。

我的方法是否正确获取连接到同一网络的服务/设备列表?

我尝试以下代码来发现列表

注册服务

我的决心听众

当我尝试执行代码时,它显示 null显示空