问题描述:同一网络内,同一台手机上不同APP,假如视频APP①搜索得到电视,②却搜索不到,该怎么办?
分析:
这种情况更容易理解,问题基本在于手机端APP,因为电视端的上线消息发出来了,同一台手机上视频APP①监听到了,②没监听到,所以得看视频APP②是否正常及时处理,及时刷新设备列表界面。
手机和电视搜索都是互相的,在同一情况下,电视能被某个APP搜索到,说明电视被搜索的功能正常运转,某个APP搜索不到,问题出在这家手机端APP厂商搞的效果性能方面。
解决方法:
1、某APP搜索不到电视,杀掉该APP并重启试试;
2、如果是在任何情况下都搜索不到,那再抓包进一步分析是否是协议兼容性的问题,确保兼容即可;
各种情况都得具体情况具体分析。 接下来,我们介绍一下常见的DLNA/AirPlay是如何搜索设备的。让大家能够弄明白投屏搜索设备的原理,从而找到解决问题的方案。
使用的组播地址239.255.255.250,端口1900
DLNA(SSDP)
使用的组播地址224.0.0.251,端口5353
AirPlay(mDNS)
投屏搜索为什么使用组播?
海豚星空投屏搜索设备采用组播的方式。
组播、单播和广播是网络通信中的三种基本传输方式,它们在数据传输的效率、范围和目标上有所不同。
单播(Unicast)
单播是指发送方将数据包发送给一个特定的接收方。在单播通信中,每个数据包只发送给一个目标地址。
广播(Broadcast)
广播是指发送方将数据包发送给网络中的所有设备。在广播通信中,数据包会被发送到网络上的每一个设备,无论它们是否需要这些数据。
组播(Multicast)
组播是指发送方将数据包发送给一组特定的接收者。与单播相比,组播可以同时向多个接收者发送数据,但与广播不同,它不会发送给网络上的所有设备。
相比单播来说,组播的优势在于:
用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
相比广播来说,组播的优势在于:
不会造成网络资源的浪费,并能提高信息传输的安全性。广播只能在同一广播域中进行,而组播可以实现跨域的传输。
在某些特殊网络环境(比如酒店)网络下,需要防止同一网络内乱投屏,不同的厂商有不同的做法,主要有以下几种应对方式:
1、一个房间装一个路由器。
劣势:这样会增加硬件成本。
2、由电视来提供热点。
劣势:这样会考验电视wifi模块的配置性能,增加电视购置成本。
3、在交换机网关配置时不通过组播,扫码认证后电视一直向手机发单播。
劣势:这样就发挥不了组播的优势;另外投屏协议标准是监听组播消息的,手机APP如果不兼容单播处理就会搜索不到。在技术上降低50%搜索到设备的概率。
4、交换机网关正常通组播。
劣势:需要频繁的、大量的发组播消息。容易导致网络丢包,手机APP本身也存在处理不过来的问题。
海豚星空为什么能提升设备搜索率?
DLNA设备搜索发现流程
手机发现电视设备有“主动发现”和“被动发现”两种方式:
(1) 被动发现:电视端Notify上线消息随时通知网络内其他手机端设备,告知电视端在线/离线的消息。 手机端监听到电视端上线消息,获取电视相关信息从而搜索到电视设备。
(2) 主动发现:手机端随时搜索发现电视端设备,电视端监听到手机端搜索消息进行应答,手机端获取电视端相关信息从而搜索到电视设备。 从而达到设备“即插即用”的效果。
通过抓网络包可以看到网络内的组播消息Notify,M-Search。如果没抓到任何组播包,那就得检查网络环境配置是否通组播。
AirPlay设备搜索发现流程
AirPlay搜素设备流程类似,通过mDNS组播消息。
(1) 电视端启动宣告上线/离线消息随时通知网络内其他手机端设备,告知电视端在线/离线的消息。手机端监听到电视端上线消息,获取到电视相关信息从而搜索到电视设备。
(2) 手机端启动搜索发现电视端设备,电视端监听到手机端搜索消息进行应答,手机端获取电视端相关信息从而搜索到电视设备。
通过抓网络包可以抓到mDNS组播消息。
测试分析对比
同一网络内,打开5个不同的DLNA接收端,用几个发送端搜索对比。可对比5个不同接收端被发现的效率,还有几个不同手机端APP搜索的效率。
通过对比,可看出不同手机端APP搜索设备的性能。
投屏对网络有两个基本要求:
(1) 网络通组播,才能搜索到设备。
(2) 手机和电视能互相通讯。
(不管如何划分网络VLAN,消息转发等任何环境,只要确保如上两点即可)返回搜狐,查看更多