当前位置: 首页 > news >正文

WiFi 局域网通信 - 发现服务和解析

1. nsdManager

nsdManager = requireContext().getSystemService(Context.NSD_SERVICE) as NsdManager

2.  NsdManager.DiscoveryListener

注意:在onStartDiscoveryFailed 和 onStopDiscoveryFailed里不要调用nsdManager.stopServiceDiscovery(this) 方法,会出现crash问题;如下方式调用:

if (discoveryListener != null) {Log.d(TAG, "start : loadData ")nsdManager.stopServiceDiscovery(discoveryListener)
}discoveryListener = object : NsdManager.DiscoveryListener {override fun onDiscoveryStarted(regType: String) {Log.d(TAG, "Service discovery started")}override fun onServiceFound(service: NsdServiceInfo) {Log.d(TAG, "Service discovery success: $service")Log.d(TAG, "Service discovery serviceName: ${service.serviceName}")when {service.serviceType != SERVICE_TYPE ->Log.d(TAG, "Unknown Service Type: ${service.serviceType}")service.serviceType == SERVICE_TYPE -> {Log.d(TAG, "start : resolveListener ")resolveService(service)}}}override fun onServiceLost(service: NsdServiceInfo) {// When the network service is no longer available.Log.e(TAG, "service lost: $service")}override fun onDiscoveryStopped(serviceType: String) {Log.i(TAG, "Discovery stopped: $serviceType")}override fun onStartDiscoveryFailed(serviceType: String, errorCode: Int) {Log.e(TAG, "onStart Discovery failed: Error code:$errorCode")}override fun onStopDiscoveryFailed(serviceType: String, errorCode: Int) {Log.e(TAG, "onStop Discovery failed: Error code:$errorCode")}
}
//SERVICE_TYPE 为你自定义的服务名称,比如 const val SERVICE_TYPE = "_test-rct._tcp."
nsdManager.discoverServices(SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, discoveryListener)

3. NsdManager.ResolveListener

private fun resolveService(service: NsdServiceInfo) {val resolveListener = object : NsdManager.ResolveListener {override fun onResolveFailed(serviceInfo: NsdServiceInfo, errorCode: Int) {Log.e(TAG, "Resolve failed: $errorCode")}override fun onServiceResolved(serviceInfo: NsdServiceInfo) {val port: Int = serviceInfo.portval host =serviceInfo.host.hostAddressLog.d(TAG, "Resolve port: $port")Log.d(TAG, "Resolve host: $host")}}nsdManager.resolveService(service, resolveListener)
}
http://www.lryc.cn/news/408598.html

相关文章:

  • ChatGPT建议前端学习计划
  • YOLO5项目目录最强解析
  • 【python】sklearn基础教程及示例
  • Linux:传输层(2) -- TCP协议(2)
  • AcWing 802. 区间和
  • 实验2-2-1 温度转换
  • Spark实时(六):Output Sinks案例演示
  • 在SQL编程中DROP、DELETE和TRUNCATE的区别
  • 【AI大模型】Prompt 提示词工程使用详解
  • 学习记录day18——数据结构 算法
  • 一篇文章带你学完Java所有的时间与日期类
  • 利用GPT4o Captcha工具和AI技术全面识别验证码
  • 大学生算法高等数学学习平台设计方案 (第一版)
  • 机器学习算法与Python实战 | 两行代码即可应用 40 个机器学习模型--lazypredict 库!
  • 使用WebSocket协议调用群发方法将消息返回客户端页面
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十七章 Linux中断实验
  • 每日一题~961div2A+B+C(阅读题,思维,数学log)
  • Fireflyrk3288 ubuntu18.04添加Qt开发环境、安装mysql-server
  • 简化mybatis @Select IN条件的编写
  • Windows图形界面(GUI)-MFC-C/C++ - Control
  • SQL Server数据库安全:策略制定与实践指南
  • Spring Boot入门指南:留言板
  • Docker 中安装和配置带用户名和密码保护的 Elasticsearch
  • 面试官:说说JVM内存调优及内存结构
  • Ansible的脚本-----playbook剧本【下】
  • Mysql开启远程控制简化版,亲测有效
  • 【MQTT协议与IoT通信】MQTT协议的使用和管理
  • 根据题意写出完整的css,html和js代码【购物车模块页面及功能实现】
  • AWS免费层之后:了解和管理您的云服务成本
  • Linux定时同步系统时间到硬件时间