参考博文:
解决接收不到组播包的问题 - Justlinux2010的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justlinux2010/article/details/11140383
1、问题描述
实现在多网卡设备上发送组播消息,实现设备搜索,并接收通过组播返回的搜索信息。
设备为多网卡nvr,有一个常规网卡和一个PPPOE口;在进行发送组播搜索ipc时,只可以在常规网卡上接收到反馈的组播信息,而在ppoe上没有
2、问题原因及解决方法
关键代码(组播socket的初始化):
int CreateMuticastSocket(const std::string ðx, int port)
{
int ret = 0;
int sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(-1 == sockfd)
{
printf("socket error!!!\n");
perror("socket:");
return -1;
}
/*test ip*/
struct sockaddr_in localaddr = {0};
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(port);
localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
ret =