{
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