ONVIF中调用soap_send___wsdd__Probe返回-1问题排查
来源:互联网 发布:网站手机号码提取软件 编辑:程序博客网 时间:2024/04/29 12:57
最近在海思的开发板上调用ONVIF来搜索局域网内的摄像头,发现同样的代码,直接编译运行在板端就可以正常搜索,将代码合到已有的QT代码中,就无法搜索,soap_send___wsdd__Probe返回-1。将板卡多余网口关闭,并且在程序中指定网口IP均不能解决问题。
经过两天排查,发现问题出现在stdsoap2.c的fsend函数中,在下述代码中,当程序sendto全局广播包时,返回-1(nwritten=-1),getlasterror得到101,经查为路由错误。
if (nwritten < 0)
{ int udp_repeat;
int udp_delay;
if ((soap->connect_flags & SO_BROADCAST))
udp_repeat = 2; /* SOAP-over-UDP MULTICAST_UDP_REPEAT - 1 */
else
udp_repeat = 1; /* SOAP-over-UDP UNICAST_UDP_REPEAT - 1 */
udp_delay = ((unsigned int)soap_random % 201) + 50; /* UDP_MIN_DELAY .. UDP_MAX_DELAY */
do
{ tcp_select(soap, sk, SOAP_TCP_SELECT_ERR, -1000 * udp_delay);
if (soap->peerlen)
nwritten = sendto(sk, (char*)s, (SOAP_WINSOCKINT)n, soap->socket_flags, (struct sockaddr*)&soap->peer, (SOAP_WINSOCKINT)soap->peerlen);
else
nwritten = send(sk, s, (SOAP_WINSOCKINT)n, soap->socket_flags);
udp_delay <<= 1;
if (udp_delay > 500) /* UDP_UPPER_DELAY */
udp_delay = 500;
}
while (nwritten < 0 && --udp_repeat > 0);
}
if (nwritten < 0)
{ err = soap_socket_errno(sk);
if (err && err != SOAP_EINTR)
{ soap->errnum = err;
return SOAP_EOF;
}
nwritten = 0; /* and call write() again */
}
给板端添加路由命令route add -host 239.255.255.250 dev eth0 后ok,可以正常搜索设备。
- ONVIF中调用soap_send___wsdd__Probe返回-1问题排查
- 基于onvif开发中soap_call___tds__GetCapabilities函数调用返回错误值是4
- 关于delloc 没有调用 问题排查 笔记
- 排查调用耗时较长的问题
- onvif-1
- windows socket编程中调用recvfrom返回-1(windows error 10014)错误的问题
- c语言中调用shell脚本返回值问题分析
- c语言中调用shell脚本返回值问题分析
- struts execute方法中调用addFieldError方法,返回问题
- C++中内存分配、函数调用和返回值问题
- C++中内存分配、函数调用和返回值问题
- C++中内存分配、函数调用和返回值问题
- C++中内存分配、函数调用和返回值问题
- c语言中调用shell脚本返回值问题分析
- C++中内存分配、函数调用和返回值问题
- 一次JVM中FullGC问题排查过程
- HiveQL中如何排查数据倾斜问题
- c++开发中,调试排查问题总结
- HDU2018母牛的故事
- apache多站点配置
- leetcode 538. Convert BST to Greater Tree
- echarts动图表示关系
- Linux安装字体
- ONVIF中调用soap_send___wsdd__Probe返回-1问题排查
- The external network bridge 'br-ex' does not exist问题解决
- iOS——UITabBarItem
- 随笔- int 、uint区别及数据长度
- Vmware虚拟机NAT配置静态IP详解
- 放苹果
- Since your iTunes Connect status is Metadata Rejected, we do NOT require a new binar被拒原因总结
- 提交form表单后关闭Iframe弹窗并刷新父级页面
- 1. Javaweb知识