Onvif 设备发现的多网卡选择问题
来源:互联网 发布:坚持跑步 知乎 编辑:程序博客网 时间:2024/05/01 07:01
来源:http://blog.csdn.net/chenben/article/details/12650899
经历了千辛万苦的尝试,原来onvif上处理多网卡的选择是如此简单,soap的设计早就考虑好了此问题。
苦水不多说了,步骤如下:
1、获取本机的各网卡的IP地址。
在网上看见讲得比较多的方法有两个。
一是将ipconfig /all的运行结果保存到文件,然后分析出各IP地址。但是我实操时遇到了操作系统的语言问题。我测试了三台电脑,一台回复全英文的,一台回复中英文结合的,装了繁体系统的那台返回英文和繁体结合的。想不到如何处理,于是放弃了本方法。希望各大牛能告诉我他们的处理方法。
第二种方法是通过gethostname,加gethostbyname这两个库函数组合获取各网卡的IP地址。我选用就是此方法的,在这里我就不列举我的具体做法了,感觉处理得不太好,给献丑了,网上例子也不少。此方法可以获取到AF_INET和IF_INET6的地址,并且很好地排除了工作站上那些“bluetooth 网络”等不关心的网卡。
2、在soap中设置IP地址
只要设置好soap的ipv4_multicast_if参数,一切就由soap内部搞定了。很简单吧。
- struct in_addr if_req;
- if_req.s_addr = inet_addr("xxx.xxx.xxx.xxx"); // 想绑定的IP地址
- soap.ipv4_multicast_if = (char*)soap_malloc(&soap, sizeof(in_addr));
- memset(soap.ipv4_multicast_if, 0, sizeof(in_addr));
- memcpy(soap.ipv4_multicast_if, (char*)&if_req, sizeof(if_req));</SPAN>
我是在设定setsockopt的IP_ADD_MEMBERSHIP参数,即加入组播后设定以上参数的。
总结:要不是偶然看见了soap结构中有此参数,可能我还没能从解决问题的苦海中解放出来。看来必须再好好研究soap的结构了。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
这个问题困扰了我好久,感谢上面的大神,谢谢!
- Onvif 设备发现的多网卡选择问题
- Onvif 设备发现的多网卡选择问题
- Onvif 设备发现的多网卡选择问题
- onvif 同时发现多台设备的问题
- onvif设备发现
- onvif新版本发现不了老版本onvif的ipc问题
- Onvif备忘录(2)----设备发现
- Onvif备忘录(2)----设备发现
- onvif开发之设备发现功能的实现
- onvif开发之设备发现功能的实现
- onvif开发之设备发现功能的实现
- onvif开发之设备发现功能的实现
- onvif开发之设备发现功能的实现
- onvif开发之设备发现功能的实现
- onvif开发之设备发现功能的实现
- onvif 客户端的发现
- onvif 设备自发现测试通过
- onvif 设备自发现测试通过
- HDU 2002 计算球体积(水题)
- Linux查看端口使用状态、关闭端口方法
- NSAttributedString那点事
- C#虚函数
- 利刃,毫不犹豫的斩断 activity 中 oncreate()的重复执行
- Onvif 设备发现的多网卡选择问题
- Xcode里-ObjC, -all_load, -force_load
- VR, AR等学习资源
- EDB数据库创建流程指南
- nyoj714 Card Trick(第六届河南省程序设计大赛)
- 在陌生Linux环境查看Tomcat服务的方法
- S2SH jFreeChart 制作柱状图和饼图
- oracle 当前日期的前一年的日期
- 近期网友遇到的一些问题,整理出来 大家可以学习 交流 MySQL问题及解答