Onvi再学习----分析设计方案

      之前版本的Onvif协议是使用gsoap框架生成的,每升级一次onvif版本都需要从onvif官网下载最新的wsdl。然后使用gsoap带的相关工具去生成框架代码。在onvif版本升级的时候改动太多。故考虑使用xml解析库以及socket实现一个onvif的服务器和客户端demo。

        从下面的Onvif的请求和响应报文来看,Onvif主要使用的是HTTP协议,另外就是xml技术。考虑在socket实现Onvif协议的Server端的时候,考虑使用TCP +固定的http头的方式来打http部分,后续数据使用xml的解析库来实现。

Onvif交互:

HTTP请求//

POST /onvif/device_service HTTP/1.1
Host: 192.168.9.106
Accept: */*
Connection: Close
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 2314




  
    
      
        
        4bW0XFdHJ4KQpPXRM5dyNfneU5Q=
        imMDXaEqaGLzdHCNRDGcnPngR9Y=
        2019-06-14T09:06:18Z
      
    
  
  
    
      false
    
  

HTTP响应//

HTTP/1.1 200 OK
Server: gSOAP/2.8
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 5755
Connection: close




  
    
      
        
        4bW0XFdHJ4KQpPXRM5dyNfneU5Q=
        imMDXaEqaGLzdHCNRDGcnPngR9Y=
        2019-06-14T09:06:18Z
      
    
  
  
    
      
        http://www.onvif.org/ver10/device/wsdl
        http://192.168.9.106:80/onvif/device_service
        
           
              
              
             
          
        
        
          1
          0
        
      
      
        http://www.onvif.org/ver10/events/wsdl
        http://192.168.9.106/onvif/Events
        
          
        
        
          1
          0
        
      
      
        http://www.onvif.org/ver10/media/wsdl
        http://192.168.9.106/onvif/Media
        
           
              
             
          
        
        
          1
          0
        
      
      
        http://www.onvif.org/ver20/imaging/wsdl
        http://192.168.9.106/onvif/Image
        
          
        
        
          1
          0
        
      
      
        http://www.onvif.org/ver20/analytics/wsdl
        http://192.168.9.106/onvif/Analytics
        
          
        
        
          1
          0
        
      
    
  

从上面Onvif的简单报文交互可以看到,Onvif主要就是通过HTTP+XML进行信令的传输,故选用如下的实现方案:

  • HTTP接收数据
  • XML解析(最终选用了Mini-XML库)

 

你可能感兴趣的:(onvif)