各位大侠,我是一名学生,最近在做一个VxWorks系统下的项目,其中用到了双冗余网卡切换技术,是这样的,最开始我用的是双网卡的网口0,程序正常,可以接收到组播数据,但是如果网口0出错,切换到网口1时,就接收不到组播数据了,只能收到单播数据了。我怀疑是路由的问题,我的网口切换语句是这样的:
hostDelete("target","193.01.108.03");
ifRouteDelete("eeE",0);
ipDetach(0,"eeE");
ipAttach(1,"eeE");
ifMaskSet("eeE1",0xffffff00);
ifAddrSet("eeE1","193.01.108.03");
程序最开始我是用如下语句加入的组:
ipMreq.imr_multiaddr.s_addr = inet_addr(“224.100.200.107”);
ipMreq.imr_interface.s_addr = inet_addr(“193.01.108.03”);
if(setsockopt(sFd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&ipMreq, sizeof(ipMreq)) < 0)
{
perror(" setsocket IP_ADD_MEMBERSHIP error:\n ");
return ERROR;
}
是不是还应该加一些添加路由之类的语句,希望各位大侠给一些建议,多谢了。