VxWorks下组播发送数据的问题
/*
请各位看一下我下面的代码,功能是向组播地址发送数据。本机地址为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;
}