设备发现的过程:客户端发送报文到239.255.255.250的3702端口(ONVIF协议规定),服务器收到报文后再向客户端返回一个报文,客户端收到这个报文然后解析出Xaddrs,这就完成了一次设备发现。请看下面代码:
// 正在表达式
std::string ippattren = ("\\d+\.\\d+\.\\d+\.\\d+(\:\\d+|\.{5})");
std::string brand = ("\/name\/(\.\*)\\s");
std::string model = ("\/hardware\/(\.\*)\\s");
std::string stType = ("\/type\/(\.\*)\\s");
// 忽略大小写
std::regex_constants::syntax_option_type fl = std::regex_constants::icase;
// 编译正在表达式
std::regex regExpress(ippattren, fl);
std::regex regBrand(brand,fl);
std::regex regModel(model,fl);
std::regex regType(stType,fl);
std::smatch ms;
char *pBuffer;
//UUID 好最后是变化的否则 onvif 组播服务可能只回复一次
std::string guid_string = "uuid:68749E8A-2EDD-49C0-ABF8-45E0733911BF";
wsddProxy discover