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;
}
...全文
298 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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