Onvif之设备发现-基于gsoap2.8.27

工具及平台:
Gsoap版本:gsoap2.8.27
Onvif :WSDL文档,(2015.12.15最新文档)
框架代码生成:windows下wsdl2、soapcpp2(win下和linux生成一样的)
编译链为:Linux gcc4.4.3

上篇文章介绍了onvif框架的生成,下面来介绍下基于前面框架设备发现的实现,搭建好框架后设备的发现就特别简单啦!

gsoap中有很多实用的插件,此次设备发现就是利用wsdd(在目录gsoap_2.8.27\gsoap-2.8\gsoap\plugin\ wsddapi.c中)插件实现。

1.在main.c中实现

int main(int argc, char **argv)
{struct ip_mreq mcast;struct soap soap;soap_init2(&soap, SOAP_IO_UDP | SOAP_IO_FLUSH, \SOAP_IO_UDP|SOAP_IO_FLUSH);  soap_set_namespaces(&soap, namespaces);soap_set_mode(&soap, SOAP_C_UTFSTRING);soap.bind_flags        = SO_REUSEADDR;soap.connect_timeout   = 10;soap.recv_timeout      = 5;soap.send_timeout      = 5;soap_register_plugin(&soap, soap_wsa);#ifdef DEBUG    //定义调试输出文件soap_set_recv_logfile(&soap, "./log/recv.xml");soap_set_sent_logfile(&soap, "./log/send.xml");soap_set_test_logfile(&soap, "./log/test.log");
#endif  if(!soap_valid_socket(soap_bind(&soap, NULL, 3702, 10))){soap_print_fault(&soap, stderr);exit(1);}mcast.imr_multiaddr.s_addr = inet_addr("239.255.255.250");mcast.imr_interface.s_addr = inet_addr("0.0.0.0");if(setsockopt(soap.master, IPPROTO_IP, \IP_ADD_MEMBERSHIP, \(char*)&mcast, sizeof(mcast)) < 0){exit(1);}  //循环监听soap_wsdd_listen(&soap, 0);soap_done(&soap);
}

2.再在waddapi.c中实现函数

soap_wsdd_mode wsdd_event_Probe(struct soap *soap, const char *MessageID, const char *ReplyTo, const char *Types, const char *Scopes, const char *MatchBy, struct wsdd__ProbeMatchesType *matches)
{soap_wsdd_init_ProbeMatches(soap,matches);soap_wsdd_add_ProbeMatch(soap,matches,"urn:uuid:E24A4344-1236-4567-2349-234156781888","tdn:NetworkVideoTransmitter","onvif://www.onvif.org/type/video onvif://www.onvif.org/type/audio onvif://www.onvif.org/hardware/Hisi onvif://www.onvif.org/name/IPNC",NULL,"http://192.168.2.200:80/onvif/device_service", 1);return SOAP_WSDD_MANAGED;
}

注意tdn:NetworkVideoTransmitter 这个要与wsdd.nsmap命名空间中的一致,此处为”tdn”

最后编译生成可执行文件即可。

Onvif之设备发现-基于gsoap2.8.27相关推荐

  1. Onvif之框架生成-基于gsoap2.8.27

    Onvif之框架生成-基于gsoap2.8.27 Onvif的框架生成可以说是实现onvif协议的第一步了,当然也可以不用工具生成框架,完全按照协议来自己实现,但是有现成的工具不用白不用. 整个框架搭 ...

  2. Onvif备忘录(2)----客户端端设备发现

    续上篇,框架代码生成之后,就可以进行基于Onvif的开发了,先实现一个简单的设备发现的例子. VisualStudio中新建一个空白工程,将上篇中生成的框架代码添加进来,但soapServer.c文件 ...

  3. ONVIF系列笔记-设备发现机制

    ONVIF系列笔记-设备发现机制 ONVIF系列笔记-功能接口地址的获取 ONVIF系列笔记-流地址的获取 ONVIF系列笔记-PTZ的控制 ONVIF系列笔记-调焦切换及背光控制 SFX流媒体解决方 ...

  4. onvif 模拟摄像头_ONVIF 设备发现(网络摄像头)——实例笔记

    相关配置 ONVIF官网:http://www.onvif.org/ gSOAP安装配置:gSOAP安装配置+使用案例参考+参考链接 操作系统:CentOS7 资料参考: 许振坪的ONVIF专栏:传送 ...

  5. onvif服务器篇之设备发现(onvif discover)

    一.设备发现的机制 从ONVIF的官方文档中可以了解到,客户端在UDP协议下,向网段内的组播地址239.255.255.250,端口3702,不断地向四周发送Probe消息探针,而网段内的服务器在接收 ...

  6. 开启海康威视摄像头的ONVIF协议,支持onvif设备发现并接入推流器

    海康威视的全系列摄像头都支持onvif协议,但默认都是关闭状态,需要自行手动开启. 在使用迅思维的rtsp转rtmp推流器的时候,需要开启海康威视的onvif协议,这样就能在onvif设备发现里自动获 ...

  7. onvif gsoap 设备端接口方法部署示例及gsoap代码调用分析

    一.获取并编译gsoap 下载gsoap 环境准备 sudo apt-get install flex bison libssl-dev unzip zlib1g-dev ffmpeg 编译安装 un ...

  8. 如何发现网络中的设备 设备发现协议(收集)

    如何发现网络中的设备(收集) 如何发现网络中的设备(收集) 好吧,每次要SSH到树莓派都很麻烦,我是没找什么办法,每次都得连上显示器鼠标键盘.才能知道IP地址. 看了点python,写了个脚本来发出 ...

  9. 存储虚拟化之带内设备与基于存储控制器的虚拟化

    存储虚拟化可以在光纤交换机上,一个专用设备上,或者在阵列的控制器上.每个架构都有它的优缺点. 基于交换矩阵的虚拟化产品的接受程度不像在线虚拟化设备(例如IBM SAN Volume Controlle ...

最新文章

  1. iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清……”
  2. matlab与音频处理
  3. 这五种 Python 字符串连接方式,你都知道吗?
  4. UEditor 插入图片大于2M提示文件大小超出范围解决办法
  5. 教你吃透CSS的盒子模型(Box Model)
  6. 几个功能强大的系统源码(机票分销、机票预订、OA、手机充值、wifi营销、网络超市、体检平台)...
  7. ensp中小型企业网配置_如何构建1000人规模的网络,详细配置?
  8. centos6 下用yum 安装 nginx
  9. 谷歌宣布Kotlin成安卓开发一级语言,我们如何来学习它
  10. 多种方法让网络共享资源自动映射
  11. Oracle数据库经典50题(附答案),写完不理解的来打我
  12. IIS 信号 逻辑分析仪分析
  13. Excel中计算年龄的函数
  14. 可靠性评价类毕业论文文献都有哪些?
  15. 开机时HP Hotkey UWP Service占用内存过高
  16. 2021-1-16-JavaGuide老哥的操作系统常见问题总结 自己按照理解,综合了王道考研的视频,对内容进行了修改,增加了内容,以便于自己理解。这份材料不是背的,而是让自己去理解的。
  17. ISP、IAP、DFU和bootloader
  18. Windows 连接了网络浏览器不能上网
  19. matlab 年积日与年月日转换,空间大地测量与GPS导航定位时间系统相互转换,格里高利时通用时儒略日,GPS时,年积日相互转换的源代码程序...
  20. 通过私有化部署自建一套视频流媒体服务器平台,如何解决视频播放延时卡顿问题?

热门文章

  1. [MySQL] mysql 的行级显式锁定和悲观锁
  2. Vue+Vue-router+Vuex项目实战
  3. mysql之TIMESTAMP(时间戳)用法详解
  4. 微信成为开发者C#代码
  5. Windows XP 下的 MySQL+Apache+PHP 运行环境架设 (顶)
  6. 如何在 Java 中正确使用 wait, notify 和 notifyAll?
  7. 利用linux curl爬取网站数据
  8. docker学习(7) docker-compose使用示例
  9. iptables 学习笔记 二 参数指令
  10. 团队管理中的每日站立会