Android NSD 未发现所有服务

2024-04-30

我正在尝试使用 Android 本机服务发现来运行应用程序,但有时当我运行该应用程序时,它不会发现我的网络中的所有服务。我正在运行代码https://github.com/joeluchoa/nsd https://github.com/joeluchoa/nsd使用四个星系连接,大多数时候每个星系同时发现不同数量的服务。

基本上我使用 ServerSocket 运行服务:

ServerSocket server = new ServerSocket(0);
Log.i(TAG, "IP " + server.getInetAddress()
        + ", running on port " + server.getLocalPort());

Intent intent = new Intent(MySocket.this,
        MyPresence.class);
intent.putExtra("PORT", server.getLocalPort());
startService(intent);

然后我使用 NsdManager 中的 registerService 方法发布它:

NsdServiceInfo serviceInfo = new NsdServiceInfo();

serviceInfo.setServiceName(Build.SERIAL + "-" + new Date().getTime());
serviceInfo.setServiceType(SERVICE_TYPE);
serviceInfo.setPort(port);

mNsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD,
        mRegistrationListener);

为了发现服务,我使用 NsdManager 中的 discoveryServices 方法:

mNsdManager.discoverServices(SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD,
        mDiscoveryListener);

使用mDiscoveryListener如下:

mDiscoveryListener = new NsdManager.DiscoveryListener() {

    @Override
    public void onDiscoveryStarted(String regType) {
        Log.d(TAG, "Service discovery started");
    }

    @Override
    public void onServiceFound(NsdServiceInfo service) {
        Log.d(TAG, "Service discovery success");
        Log.d(TAG, String.format("%s %s %s %d",
                service.getServiceName(), service.getServiceType(),
                service.getHost(), service.getPort()));
        if (!service.getServiceType().contains(SERVICE_TYPE)) {
            Log.d(TAG,
                    "Unknown Service Type: " + service.getServiceType());
        } else if (service.getServiceName().equals(mServiceName)) {
            Log.d(TAG, "Same machine: " + mServiceName);
        } else {
            mNsdManager.resolveService(service, mResolveListener);
        }
    }

    @Override
    public void onServiceLost(NsdServiceInfo service) {
        Log.e(TAG, "service lost" + service);
    }

    @Override
    public void onDiscoveryStopped(String serviceType) {
        Log.i(TAG, serviceType + " Discovery stopped: " + serviceType);
    }

    @Override
    public void onStartDiscoveryFailed(String serviceType, int errorCode) {
        Log.e(TAG, serviceType + " Discovery failed: Error code:"
                + errorCode);
        mNsdManager.stopServiceDiscovery(this);
    }

    @Override
    public void onStopDiscoveryFailed(String serviceType, int errorCode) {
        Log.e(TAG, serviceType + " Discovery failed: Error code:"
                + errorCode);
        mNsdManager.stopServiceDiscovery(this);
    }
};

难道我做错了什么?有人知道这个问题的解决方案或解决方法吗?


要发现所连接网络的所有服务,只需更改您正在发现的服务类型,

public static final String SERVICE_TYPE = "_services._dns-sd._udp";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android NSD 未发现所有服务 的相关文章

  • 在Android中将半径边框绘制到imageview或textview的一个角落

    我需要在我的应用程序中为图像视图或文本视图绘制边框 但我只需要在一个角落绘制它 就像图像一样 我做了一个形状 但我在所有 4 个边上都有边框
  • 删除视图并重新创建它

    有没有办法删除设置的视图 setContentView R layout set map center mapView MapView findViewById R id mapview 如果我再次调用此视图 则会收到一条错误消息 java
  • 居中复选框视图

    如果除了 或代替 复选框之外 您还对单选按钮感兴趣 请参阅this https stackoverflow com questions 16701806 centering views 2而是提问 尽管存在
  • 通过我的应用程序以编程方式插入新联系人,而不使用 Intent

    我正在使用一个应用程序 与手机联系人进行交互 我想将新联系人添加到我的手机联系人列表中 我已经尝试过以下代码 但它不起作用 void addContact Context ctx PreviewContactModel model Arra
  • Android Accessibility 执行触摸操作

    我想知道是否可以使用 Android 辅助功能服务在屏幕上的位置执行触摸操作 例如 Bundle arguments new Bundle arguments putInt coord X X value arguments putInt
  • Android相当于javascript的setTimeout和clearTimeout?

    setTimeout 有一个答案https stackoverflow com a 18381353 433570 https stackoverflow com a 18381353 433570 它没有提供我们是否可以像在 JavaSc
  • Android Studio:Android 设备监视器未显示我的设备

    我的真实设备是索尼 Xperia c6502安卓版本4 3 我确定我将其连接到我的计算机然后打开开发者选项 USB调试 on 在 SDK 管理器中 Google USB 驱动程序已安装 I downloaded Xperia Z Drive
  • 调试 Java InterruptedException,即查找原因

    在调试Android应用程序时 有时中断异常发生并使应用程序崩溃 我已经能够在默认异常处理程序上设置断点 但调用堆栈不提供信息 at java util concurrent locks AbstractQueuedSynchronizer
  • 无论如何,要控制宋何时选择Android.bp,何时不选择?

    使用新的构建系统 即 Soong 安卓取代Android mk with Android bp 还有 Android Q 及以上版本 Soong将选择所有Android bp文件 无论所有文件都存在于何处 早些时候 对于 2 级和 3 级模
  • 将 firebase auth 与 google app engine 云端点集成

    有人可以指定 使用一些示例代码 如何验证谷歌云端点中的 firebase 令牌吗 最近提出的问题根本没有澄清 如何将 Firebase 身份验证与 Google 应用引擎端点集成 https stackoverflow com questi
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • 取消通知

    我使用Onesignal推送通知 需要取消所有onPause和onResume的通知 NotificationManager notificationManager NotificationManager getApplicationCon
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • Android 发布到 facebook 墙,stream.publish 几天来就中断了

    我有很多使用 FB android sdk 发布的应用程序 github com facebook facebook android sdk 我所有使用 FB 的应用程序几天后就停止工作了 这必然是 FB 方面的更改或错误 因为我的应用程序
  • 与 Dagger 一起使用时,Espresso 生成 FileNotFoundException

    我一直在研究旧版 Android 应用程序 尝试为其添加测试和适当的架构 该应用程序有一个主要LaunchActivity它在启动时运行一系列检查 最初 该活动使用 Dagger 来 注入依赖项 活动将使用它来运行检查 但效果相当糟糕 我转
  • 使用 Glide 库设置图像加载完成后进度条的可见性

    您好 我想要一个图像进度条 该进度条将在图像加载时显示 但当图像加载完成时 我想将其设置为消失 早些时候我为此使用了毕加索库 但我不知道如何将它与 Glide 库一起使用 我知道有一些资源就绪功能 但我不知道如何使用它 谁能帮我 毕加索图书
  • 如何在 Android 中保存 Edittext 中的文本而不丢失文本的粗体、斜体等功能

    我想做的就是从 Edittext 中获取文本 该文本具有粗体和斜体等功能 并将其保存在文本文件中 但是当我读回并显示它时 这些功能丢失了 它们不显示 如何通过将文本保存在文本文件或任何文件中来保持丰富的功能 您可以使用Html toHtml
  • SQLiteDatabase.openDatabase 与 SQLiteOpenHelper.getReadableDatabase

    这两种方法有什么区别吗 两者都返回一个打开的 SQLiteDatabase 如果数据库不存在 两者都可以创建数据库 当需要读 写时 SQLiteOpenHelper 还具有 getWriteableDatabase 我应该使用哪种方法以及在
  • Android BLE 扫描永远找不到设备

    几天以来 我尝试在我的应用程序中实现 BLE 连接 我知道我尝试连接的设备功能齐全 因此问题一定是我的代码 我用BluetoothLeScanner startScan 方法 但回调方法永远不会被调用 public void startSc

随机推荐

  • 桌面应用程序的对象持久化策略

    我正在开发一个基于 Java 的桌面应用程序 我需要保留一些从应用程序对象模型生成的数据 最好保存到文件中 还需要保护持久文件 以便其他人无法从数据中获取对象模型详细信息 执行这些操作的最佳策略是什么 我的印象是这些要求对于桌面应用程序来说
  • 运营商部分应用

    如果我想在字符末尾添加一个空格以返回列表 如果我不传递任何参数 我将如何通过部分应用程序来完成此操作 还有类型是 space Char gt Char 由于使用 和 运算符出现 解析错误 我在末尾添加空格时遇到问题 到目前为止我所拥有的是
  • 如何将图像调整为原始大小

    Android s imageView has a serious flaw it makes my image into a square frame with the rest as white space How can I fix
  • EF Code First DBContext 和事务

    我想知道实现交易的最佳方式是什么DBContext 尤其 Does DbContext SaveChanges如果我更改多个实体 请在内部实施交易 如果我想打电话DbContext SaveChanges多次 相同上下文 不同上下文 如何实
  • 我是否应该将 CachingConnectionFactory 与 hornetq 2.4.1 一起使用

    根据有关在 hornetq 中使用 JMSTemplate 的长期信息 我们在连接到服务器时一直使用 CachingConnectionFactory 这是一个示例配置 与我们正在使用的配置非常相似
  • 如何从标准 url 获取用于嵌入的正确 soundcloud url?

    所以现在我可以从嵌入或 iframe 标签中已嵌入的 soundcloud 文件中获取 url 并在另一个页面上使用这些 url 并将其显示在 fancybox 中 如果用户提供典型的共享 url 例如 有没有办法获得正确的 url 或显示
  • $anchorScroll 和 $location 仅在第二次尝试后才有效

    我正在尝试使用 anchorScroll and location hash 滚动到div 我在页面顶部有一个底部 当我单击底部时 我希望页面向下滚动到我有一个页面的底部 div 由于某种原因 第一次单击该按钮时 我的页面不会滚动 如果第二
  • Spring Autowire 在同一类中创建 Bean 会导致:请求的 bean 当前正在创建错误*

    我知道该错误是不言自明的 但是当我将其余模板的设置从构造函数删除为 Autowired Qualifier myRestTemplate private RestTemplate restTemplate 时 它 起作用了 只是想知道如果同
  • 像使用 LaTeX 一样在 HTML 中引用定理

    我正在编写一些包含数学内容的网页 使用 MathJax 并且我正在寻找一种方法来进行与 LaTeX 定理引用等效的操作 如下例所示 begin theorem label thm commute a b b a end theorem Ac
  • 当 contenteditable 更改时触发事件

    当div值改变时 如何触发事件 div class changeable Click this div to edit it div 因此 当其内容发生变化时 我想创建警报和 或执行其他操作 changeable text change f
  • redirect_uri 以及如何在 SoundCloud 上托管callback.html?

    我正在尝试从笔记本电脑上的本地 HTML 页面访问 Soundcloud 我被困在将 callback html 托管为redirect uri 的部分 我尝试运行的脚本是来自 Soundcloud 文档页面的基本身份验证 JavaScri
  • 如何自定义处理 Quarkus 中未找到的资源/URL?

    我对 Quarkus 很陌生 我想知道如何覆盖提供错误日志的默认 404 页面 或者如何巧妙地将所有无法识别的 URL 重定向到 META INF recourses 目录中的自定义 HTML 使用 quarkus 0 20 你可以创建一个
  • Readelf 报告程序是共享库而不是可执行文件

    使用独立的 Android NDK r10e 工具链 使用 toolchain x86 clang3 6 开关构建 出现这种奇怪的行为 交叉编译的环境变量已设置在运行makefile之前 SYSROOT指向Android工具链位置 CXX等
  • 如何将自定义 HTML 代码放入 WordPress 网站的标题中 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这是我的网站 我需要放置 html
  • DataGridView 的替代品有哪些? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们希望在 Winforms 应用程序中替换 DataGridView 我们应该评估哪些替代方案 商业或
  • 从 Parse.com 获取 NSString 并将其粘贴到 UILabel 中

    我想从 Parse com 获取 NSString 并将其粘贴到我的 iOS 应用程序中的标签中 有谁知道该怎么做 我遇到了很大的问题 提前致谢 反问题是 你想要得到哪个 NSString 我认为这是您想要显示的 PFObject 的某些属
  • 为什么字符串中的反斜杠(\)在控制台中给出错误

    我有一个像这样的字符串 C projects cisco iwan staging enc enterprise network controller ui plugins iwan 当我粘贴到console然后按回车键 它给出以下错误 U
  • jQuery Mobile/MVC:使用 RedirectToAction 更改浏览器 URL

    我的第一篇文章 当我使用 RedirectToAction 时 浏览器中的 url 不会改变 我怎样才能实现这个目标 在使用 Web 表单 10 多年后 我将切换到 ASP NET MVC 3 0 也使用 jQuery Mobile 我已经
  • 我收到“无法解析模块`react

    i am getting the below error 开发服务器返回响应错误码 500 URL http 10 0 2 2 8081 index android bundle platform android dev true hot
  • Android NSD 未发现所有服务

    我正在尝试使用 Android 本机服务发现来运行应用程序 但有时当我运行该应用程序时 它不会发现我的网络中的所有服务 我正在运行代码https github com joeluchoa nsd https github com joelu