VxWorks下组播发送数据的问题

XiaoBaiCai 2006-02-21 12:22:18
/*
请各位看一下我下面的代码,功能是向组播地址发送数据。本机地址为192.168.0.100,组播地址为234.5.6.7,端口号为8000,系统为VxWorks。
运行后提示发送错误,sendto返回值-1。

请有经验者指点一下,先谢过了!
*/
struct sockaddr_in local;
struct sockaddr_in target;
struct ip_mreq ipMreq;
int localfd;

bzero((char *)&local,sizeof(local));
local.sin_family = AF_INET;
local.sin_addr.s_addr = inet_addr("192.168.0.100"); /*htonl(INADDR_ANY);*/
local.sin_port = htons(6666) ;

if((localfd=socket(AF_INET, SOCK_DGRAM, 0)) == ERROR)
{
printf("frame send Task socket() error:%s\n",strerror(errno);
return 1;
}
if(bind(localfd, (struct sockaddr *)&local, sizeof(struct sockaddr_in))==ERROR)
{
printf("frame send Task bind() error:%s\n",strerror(errno));
return 2;
}
ipMreq.imr_multiaddr.s_addr = inet_addr("234.5.6.7");
ipMreq.imr_interface.s_addr = inet_addr("192.168.0.100");
if(setsockopt(localfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&ipMreq, sizeof(ipMreq))==ERROR)
{
printf("setsockopt error, %s.\n",strerror(errno));
}
else
{
LogFile("join group ok.\n");
}

bzero((char *)&target,sizeof(target));
target.sin_family = AF_INET;
target.sin_addr.s_addr = inet_addr("234.5.6.7");
target.sin_port = htons(8000);

ret = sendto(localfd, "hello!", 6, 0, (struct aockaddr *)&target, sizeof(struct sockaddr_in));
if(ret==ERROR)
{
printf("sendto failed, return %d, error:%s\n", ret, strerror(errno));
return 3;
}
...全文
122 点赞 收藏 回复
写回复
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
相关推荐
发帖
驱动开发/核心开发
创建于2007-09-28

2.1w+

社区成员

硬件/嵌入开发 驱动开发/核心开发
申请成为版主
帖子事件
创建了帖子
2006-02-21 12:22
社区公告
暂无公告