{
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