目标
是在iPhone手机上可以发现屏幕镜像的新设备,如下图所示
1.png
过程
iPhone设备发现屏幕镜像设备依靠的是mdns协议,这是一个用于局域网发现设备的协议,仿照dns协议,镜像设备启动后,会注册自己到路由器的组播地址224.0.0.251,当iPhone设备发起搜索协议的时候,会发送搜索的信息到224.0.0.251,这时路由器会转发信息到所有曾经注册到224.0.0.251的镜像设备,当然也可能是其他类型的设备,搜索信息如下图
2.png
可见查询了支持两个协议的设备,一个是roap.tcp.local
,一个是airplay.tcp.local
,前者是airplay音频传输,例如传输歌曲到Airport,也用于镜像时候的音频,后者是传输视频,同时也支持传输屏幕镜像,在本例中,我们只支持屏幕镜像,可以先不考虑声音,所以对于屏幕镜像设备,支持airplay.tcp.local
即可,也就是说,返回如下的包
3.png
请注意绿框中的信息,是经过特别准备的,它包含了如下字典信息,该字典信息会在下文中用到
"deviceid" -> "58:55:CA:1A:E2:88"
"features" -> "0x5A7FFEE6""
"flags" -> "0x4"
"model" -> "AppleTV3,1"
"pk" -> "b07727d6f6cd6e08b58ede525ec3cdeaa252ad9f683feb212ef8a205246554e7"
"pi" -> "2e388006-13ba-4041-9a67-25dd4a43d536"
"srcvers" -> "220.68"
"vv" -> "2"
iPhone收到上面的信息之后,还会再次查询txt信息,依然把上面的字典信息返回,这时iPhone上面会看到新的镜像设备My AirPlay Device
点击My AirPlay Device
后无法连接,如果想要连接成功,需要看下篇AirPlay 镜像协议-下(交换秘钥与传输)