使用gsoap2.8.11轻松实现ONVIF_discover教程

需积分: 49 13 下载量 170 浏览量 更新于2024-09-11 收藏 278KB PDF 举报
"这篇教程主要介绍了如何使用gsoap2.8.11来实现ONVIF设备发现功能(onvif_discover),并提供了详细的步骤。教程由他人指导并整理,适用于初学者,简化了利用gsoap开发ONVIF应用的复杂度。" 在ONVIF协议的实现过程中,gsoap是一个非常重要的工具,它帮助开发者处理SOAP和WSDL相关的复杂性。在gsoap2.8.11版本中,wsddapi插件提供了预定义的接口,使得实现ONVIF设备发现变得更加简单,不再需要手动处理probe的所有细节。 首先,你需要从ONVIF官网下载wsdl和xsd文件,例如`analytics.wsdl`, `devicemgmt.wsd`, 等等。然后使用wsdl2h工具生成`.h`头文件,命令如下: ```bash wsdl2h -sck-t /opt/nfshost/gsoap-2.8/gsoap/typemap.dat -o onvif.h analytics.wsdl analyticsdevice.wsdl devicemgmt.wsdldisplay.wsdl event.wsdl imaging.wsdl media.wsdl ptz.wsdl receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl search.wsdl deviceio.wsdl ``` 这个过程可能会较慢,因为wsdl2h会尝试在线下载依赖的xsd和wsdl文件。为了提高效率,你可以提前下载这些文件,并修改wsdl文件中的`schemaLocation`属性,指向本地路径。 接下来,你需要编辑生成的`onvif.h`文件,添加`#import "wsse.h"`,引入身份验证相关的头文件。`wsse`是用于处理Web服务安全的标准,对于ONVIF设备通信来说,通常需要进行身份验证。 然后,使用soapcpp2生成C/C++代码,命令如下: ```bash soapcpp2 -2 -L -c -x -d../ -I/opt/nfshost/gsoap-2.8/gsoap:/opt/nfshost/gsoap-2.8/gsoap/import/:/opt/nfshost/gsoap-2.8/gsoap/custom/ onvif.h ``` 这将生成一系列的源文件和库,供你的项目使用。通过填充wsddapi提供的接口,你可以实现ONVIF设备的发现功能,即`onvif_discover`。 在实际使用中,你需要理解WSDL(Web服务描述语言)和SOAP(简单对象访问协议),它们是ONVIF协议的基础。WSDL描述了Web服务的接口、消息格式和通信方式,而SOAP则是基于XML的协议,用于交换结构化的信息。 此外,ONVIF设备发现通常涉及使用Probe、ProbeMatch和 Bye 消息。你需要正确配置和使用这些消息,以找到网络上的ONVIF设备。在gsoap的帮助下,你可以创建一个客户端,发送Probe请求,然后接收并解析来自ONVIF设备的ProbeMatch响应,从而实现设备的发现和连接。 这篇教程提供了一个简化的流程,帮助开发者利用gsoap2.8.11快速实现ONVIF协议的设备发现功能。通过学习和实践,你可以进一步理解和掌握ONVIF协议以及gsoap的使用方法,这对于开发视频监控系统或其他与ONVIF兼容的物联网设备至关重要。