onvif 服务端设备发现在linux上运行不会报错,但是交叉编译运行在嵌入式开发板上是会报错

{
 int loop = 1;
 struct ip_mreq mcast;

 /* 在同一个主机上进行广播设置套接口,
 作用是方便单个开发系统上测试多播IP广播 */ 
  loop = 1; 
 if ((setsockopt(pstSoapEnv->master, SOL_SOCKET, SO_REUSEADDR, (void *) &loop,  sizeof (loop))) == -1)
 {  
  printf("setsockopt SO_REUSEADDR error!\n");  
 }
 
 if(setsockopt(pstSoapEnv->master, IPPROTO_IP, IP_MULTICAST_LOOP, (char *)&loop, sizeof(loop)) < 0)
 {    
  perror("setsockopt IP_MULTICAST_LOOP error!\n");
  return (-1);
 }

 mcast.imr_multiaddr.s_addr = inet_addr("239.255.255.250");
 mcast.imr_interface.s_addr = htonl(INADDR_ANY);
#if 1
 if(setsockopt(pstSoapEnv->master, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mcast, sizeof(mcast)) < 0)
 {
  printf("setsockopt IP_ADD_MEMBERSHIP error!\n");////交叉编译运行在嵌入式开发板上是会报错,会运行到这里
  return -1;
 }
#endif
 return 0;
}

 

 

 

setsockopt(pstSoapEnv->master, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mcast, sizeof(mcast)) 
出现这样子的问题可能是开发板的网关出现了问题,设置下网关,我得问题得到了解决(我只能说是我的问题解决了,如果你碰到了这种情况,我不能保证和我的情况是一样的,仅供参考)。

以下附设置网关命令
route add default gw 192.168.0.1

你可能感兴趣的:(Linux,C/C++,嵌入式开发,监控相关)