Onvif设备客户端搜索功能
实现原理:
在Onvif协议中规定,客户端以多播的形式往多播组发送一个Probe(探测:soap_send___wsdd__Probe函数)的消息去搜索目标设备,在该探测消息中包含了客户端中规定的搜寻条件;而服务端则在指定的端口监测是否有广播消息请求,并对比对应搜寻的条件,如果符合则回复该条广播消息,回复的消息内容中即包含了服务端的IP和服务端Onvif的端口。
客户端发送完探测消息之后则进入下一步循环的被动接收服务端返回的广播响应消息(soap_recv___wsdd__ProbeMatches接收函数),如果有消息返回则获取到Onvif的设备信息。
// 宏值定义
const char *SOAP_ENDPOINT = "soap.udp://239.255.255.250:3702"; // 组播IP:239.255.255.250,Onvif服务端监听的端口为3702
const char *WAS_TO = "urn:schemas-xmlsoap-org:ws:2005:04:discovery";
const char *WAS_ACTIONS = "http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe";
const char *SOAP_ITEM = ""; // 寻找的设备范围
const char *SOAP_TYPES = "dn:NetworkVideoTransmitter"; // 寻找的设备类型
// 初始化变量信息
wsdd__ProbeType