组播在双网卡或者多网卡下,系统会根据路由表自动选择网卡发送命令,但是会导致一些网卡发送数据异常,这时候就需要绑定ip来解决这个问题了。
我被这个问题纠结了几天,网上的资料也很少,在查找无数资料后,终于找到一个可行的解决方案,希望能够帮助到遇到同样问题的人。
//把这段代码放在send前面
unsigned long address;
//str_ip_muti传入的网卡IP地址,例如:192.168.5.16。
address = inet_addr(str_ip_muti);
setsockopt(m_SendSocket,IPPROTO_IP,IP_MULTICAST_IF,(char FAR *)&address,sizeof(address)) ;
//这个是我的send函数
m_SendSocket.SendTo(strMessage, nSize, (SOCKADDR*)&m_saHostGroup, sizeof(SOCKADDR), 0);