upnp协议不可用,udp协议
其他文章通用即插即用和简单服务发现协议之一
libupnp的例子写得不是很有条理,但是很容易修改,是很好的入门
1、SampleUtil_PrintEvent()这个函数是打印出所有的控制点,可以注释掉,除了显示是没有用处的,重点函数是TvCtrlPointCallbackEventHandler回调
2、修改代码里面的例子tv_ctrlpt_main.cpp重点关注,这是一个控制点的编写,编写家庭娱乐网络投屏设备需要修改很多名称参数
RC=TvCtrlPointStart(Linux _ print,NULL,0);这句代码是整个入口,需要关注,一步一步调试进去,就明白通用即插即用协议了,其他基础请看我的其他文章。
上图是修改过后打印搜索到的设备,本图是搜索到了穆菡设备
上图是网络封包分析抓返回包,实际上用户数据报协议里面包含的是超文本传送协议(超文本传输协议的缩写)协议。
抓包使用语法用户数据报协议和主机xxxx.xxxx.xxx.xxx,而不是主机192.168.1.255
因为广播地址有很多干扰包,所以去掉广播包
dlnap这是大蟒写的一个投屏,写得言简意赅,调试下来,技巧十足,作者很有功力
python dl nap。py-IP 192。168 .1 .144-打http://127。0 .0 .1:8000/a . MP4
python dl nap。py-IP 192。168 .1 .144-停止
事实上,投屏是分为两步走的1、发送命令让大屏播放mp4文件邮政/av运输/CFF 47 b 40-2475-7ff 1-7459-318 EC 45 c 9853/控制。XML HTTP/1.1用户代理:dl nap . py/0.15接受:*/*内容类型:text/XML;charset= utf-8 主机:192。168 .1 .144:1551 content-Length:504 soap action: urn:schemas-UPnP-org:service:av transport:1 # SetAVTransportURI 连接:close?可扩展标记语言版本=1.0 编码=utf-8 ?s:Envelope xmlns:s= http://模式。XML soap。org/soap/Envelope/ s:encoding style= http://schema。XML soap。org/soap/encoding/ s:Body u:SetAVTransportURI xmlns:u= urn:schemas-UPnP-org:service:av transport:1 实例id 0/instanceidcurrenturi http://127。0 .0 .1:8000/a . MP4/currenturi currenturi元数据播放邮政/av运输/CFF 47 b 40-2475-7ff 1-7459-318 EC 45 c 9853/控制。XML HTTP/1.1用户代理:dl nap . py/0.15接受:*/*内容类型:text/XML;charset=utf-8 主机:192 .168 .1 .144:1551内容长度:401 soap操作:“urn:schemas-UPnP-org:service:av transport:1 # Play”连接:关闭?可扩展标记语言版本=1.0 编码=utf-8 ?s:Envelope xmlns:s= http://模式。XML soap。org/soap/Envelope/ s:encoding style= http://schema。XML soap。org/soap/encoding/ s:Body u:Play xmlns:u= urn:schemas-UPnP-org:service:av transport:1 实例id 0/instance id Speed 1/Speed/u:Play/s:Body/s:Envelope以上理解了,除了网络的基本功力,还要有超文本传送协议(超文本传输协议的缩写)协议的理解以及可扩展标记语言解析等等,肥皂协议的理解,dlna大屏投放基本就能做了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。