局域网上,在vxwork下实现组播数据接收,发现没办法收到组播数据,不解,请高手指点!!!

famugong 2005-08-24 03:12:27
代码如下:
int mctest()
{
int sockfd;
int sock_reuse = 1;
struct ip_mreq multicast;
struct sockaddr_in recver_addr;
struct in_addr local_addr;
char szError[100];
int index = 0, // Integer index
iRecvLen; // Length of recv_sin
char szMessageA[1024]; // ASCII string
char szMessageW[1024]; // Unicode string
int wVersionRequested;


memset(&multicast, 0, sizeof(multicast));
multicast.imr_multiaddr.s_addr = inet_addr("224.100.100.100");
multicast.imr_interface.s_addr = inet_addr("172.16.66.105"); //local ip addr
recver_addr.sin_family = AF_INET;
recver_addr.sin_port = htons(6677);
recver_addr.sin_addr.s_addr = htonl(INADDR_ANY);

sockfd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&sock_reuse, sizeof(sock_reuse);
bind(sockfd,(struct sockaddr *)&recver_addr,sizeof(recver_addr);
setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,(char *)&multicast,sizeof(multicast);
iRecvLen = sizeof (recver_addr);
memset(szMessageA, 0, sizeof(szMessageA));
LOOP:
recvfrom (sockfd, szMessageA,sizeof(szMessageA), 0,(struct sockaddr *) &recver_addr,&iRecvLen);
goto LOOP;
}

去掉所有出错处理,net api调用都没有出错,可就是收不到包
用ifShow命令,发现网卡上也没有收到数据。
为什么啊!
...全文
174 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cai3995 2005-08-27
  • 打赏
  • 举报
回复
The BSP or micro code has droped the packets
Please check them

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧