本文作者:Binkery

本文地址:https://www.binkery.com/archives/318.html
版权声明:欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

mDNS 的工作原理
首先,在 IP 协议里规定了一些保留地址,其中有一个是 224.0.0.251,对应的 IPv6 地址是 [FF02::FB]。
mDNS 协议规定了一个端口,5353。
mDNS 基于 UDP 协议。
每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少。当然,具体实现要比这个复杂点。
比如,A主机进入局域网,开启了 mDNS 服务,并向 mDNS 服务注册以下信息:我提供 FTP 服务,我的IP是 192.168.1.101,端口是 21。当B主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 FTP 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 FTP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。
大概的原理就是这样子,mDNS提供的服务要远远多于这个,当然服务多但并不复杂。
在Apple 的设备上(电脑,笔记本,iphone,ipad等设备)都提供了这个服务。很多Linux设备也提供这个服务。Windows的设备可能没有提供,但是如果安装了iTunes之类的软件的话,也提供了这个服务。
这样就可以利用这个服务开发一些局域网内的自动发现,然后提供一些局域网内交互的应用了。
jmDNS 是一个 JAVA 平台的,提供 mDNS 服务的第三方库。在这个 jar 包引入到 Android 项目里,就可以获得 mDNS 服务了。Android 在 3.x 还是 4.x 之后已经提供局域网内自动发现的 API 了,所以不需要使用 jmDNS 第三方库就能实现了。

mDNS__2018.07.30相关推荐

  1. 2019.07.30 学习整理

    2019.07.30 学习整理 数据类型 1. 什么是数据类型 数据类型指的就是变量值的不同类型 2. 为何对数据分类? 变量的是用来反映状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数 ...

  2. 2018.07.30 巴别时代

    * 项目部署更新 用符号链接 project => project1, project2 ln -s project2 project * composer自动加载机制 namespace =& ...

  3. .net remoting http://www.cnblogs.com/wayfarer/archive/2004/07/30/28723.html

    http://www.cnblogs.com/wayfarer/archive/2004/07/30/28723.html

  4. Python开发-- Lesson 2--Python数据类型(2016/07/30)

    1.文件操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下 ...

  5. 07.30《jQuery》——1.1DOM对和jQuery对象的转化

    1.dom对象--->jQuery对象 $(DOM对象):是把DOM对象转化成JQuery对象 演示代码 //1.dom对象---->jQuery对象 var div1 = documen ...

  6. Linux操作Oracle(17)——linux oracle启动时 :各种报错 解决方案(2020.07.30更新...)

    我们在linux下启动oracle服务: 第一个:启动监听服务时:执行命令:lsnrctl start :此时报command not found(这是我们在linux里见过最多的错误了吧) 原因:那 ...

  7. 基于形状图像检索的形状描述符评估——18.07.30

    论文信息:<Evaluation of Shape Descriptors for Shape-Based Image Retrieval>--2011年 这篇论文,比较了四种形状描述符, ...

  8. 2018.07.30 bzoj4355: Play with sequence(线段树)

    传送门 维护区间覆盖成非负数,区间变成max(xi+a,0)max(xi+a,0),询问区间中00的个数. 由于每次操作之后区间中都是非负数,因此相当于只用维护最小值和最小值的个数. 对于将一个区间变 ...

  9. 青龙快手极速版最新撸毛脚本(2022.07.30)KS()

    脚本如下: (没接口的别用)快手极速版-接口版 更新1.08 脚本地址: ql raw https://raw.githubusercontent.com/leafTheFish/DeathNote/ ...

最新文章

  1. java spring注解教程,spring注解
  2. 为什么人人都该懂点LLVM
  3. 云栖科技评论NO.2 | 张学友演唱会逃犯集中落网,真正的“神捕”其实是AI
  4. 【Win 10应用开发】SplitView控件
  5. 深度 | 用代码构建机器心智,我们离这个目标还有多远?
  6. wireshark解析rtp协议,流媒体中的AMR/H263/H264包的方法
  7. python 编程算法_python语言编程算法
  8. Python数模笔记-NetworkX(1)图的操作
  9. 面试官系统精讲Java源码及大厂真题 - 07 List 源码会问哪些面试题
  10. 138. Copy List with Random Pointer
  11. 秒懂商用区块链关键技术:智能合约
  12. 桥接模式与路由模式有什么不同
  13. Entrust Datacard新一代再转印证卡打印机系列喜获蓝盾杯创新奖
  14. 修改Echarts源码实现柱状图的炫彩闪烁效果
  15. Photoshop修图的常用方法与技巧一
  16. 依赖倒转原则和里氏代换原则详解
  17. php识别图片的条码,如何用php实现生成条形码图片
  18. Android事件分发机制在实战开发中的应用之二
  19. ansys workbench收敛判断
  20. 狭义相对论--洛仑兹变换推导

热门文章

  1. HTML5表格和表单
  2. 分布式系统(数据复制与一致性)
  3. 使用进程、mplayer命令实现媒体播放器
  4. android获取电话号码实例
  5. antdPro动态路由
  6. 求最大公约数(更相减损法)
  7. linux中uniq命令的使用
  8. 硬件基础知识(14)---I2S、PDM、TDM选什么音频接口
  9. 与电容有关的几点解惑
  10. 使用Qt动画框架设计角色的二维动画