无法发出IGMP report报文
我在程序里面先建立一个socket, 绑定本地端口,然后通过setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)&mreq, sizeof(mreq))), 这样来发出一个igmp的report报文.
现在的问题是, 我做完这个setsockopt之后, 首先函数没有返回错误, 那应该说明我这个函数的执行过程中没有出错, 也就是产生了这个包,但是通过ethereal抓包并没有抓到igmp包。程序如下,希望高人指点(另外linux内核中已经打开muticasting选项)
int m_hSock;
m_hSock = socket(AF_INET, SOCK_DGRAM, 0);
if(m_hSock == -1){
printf("failed!\n");
printf("socket failed!\n");
return -1;
}
struct sockaddr_in local;
memset(&local, 0, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons(1234);
local.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(m_hSock, (struct sockaddr*)&local,
sizeof(local)) == -1)
{
printf("failed!\n");
printf("bind failed!\n");
close(m_hSock);
m_hSock = -1;
}
struct ip_mreq mreq;
struct ifreq ifreq;
mreq.imr_multiaddr.s_addr= inet_addr("239.1.1.1");
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
setsockopt(sock, IPPROTO_IP,
IP_ADD_MEMBERSHIP,&mreq, sizeof(mreq));
现在的问题是, 我做完这个setsockopt之后, 首先函数没有返回错误, 那应该说明我这个函数的执行过程中没有出错, 也就是产生了这个包,但是通过ethereal抓包并没有抓到igmp包。程序如下,希望高人指点(另外linux内核中已经打开muticasting选项)
int m_hSock;
m_hSock = socket(AF_INET, SOCK_DGRAM, 0);
if(m_hSock == -1){
printf("failed!\n");
printf("socket failed!\n");
return -1;
}
struct sockaddr_in local;
memset(&local, 0, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons(1234);
local.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(m_hSock, (struct sockaddr*)&local,
sizeof(local)) == -1)
{
printf("failed!\n");
printf("bind failed!\n");
close(m_hSock);
m_hSock = -1;
}
struct ip_mreq mreq;
struct ifreq ifreq;
mreq.imr_multiaddr.s_addr= inet_addr("239.1.1.1");
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
setsockopt(sock, IPPROTO_IP,
IP_ADD_MEMBERSHIP,&mreq, sizeof(mreq));
...全文
相关推荐
IGMP v2 报文交互过程
IGMP v2报文交互过程,测试工程师手笔,测试工程师必看。分别描述了IGMP snooping和proxy两种。
【简单】力扣算法题解析LeetCode70:爬楼梯
爬楼梯问题要求计算爬到第 n 阶台阶的方法数,每次可爬 1 或 2 阶。通过动态规划,将问题转化为斐波那契数列:dp[i] = dp[i-1] + dp[i-2]。初始条件为 dp[1]=1,dp[2]=2。优化空间复杂度至 O(1),仅用两个变量滚动更新。Java 实现通过循环计算,最终返回 prev2 作为结果。时间复杂度 O(n),空间复杂度 O(1),适用于 n 较大时的高效求解。
IGMP报文格式及其实现原理
IGMP报文格式及其实现原理,初学IGMP的可以下来看看
IGMP协议概述-基本原理和报文格式
IGMP是因特网协议家族中的一个组播协议,运行于主机和与主机直接相连的组播路由器之间。目前IGMP 具有三种版本,即 IGMP v1(RFC1112)、IGMPv2(RFC2236) 和 IGMPv3(RFC3376),本文介绍了IGMPv1/v2/v3的基本原理和报文格式,是学习IGMP较好的入门读物
IGMP的原理简介
IGMP的非常好的学习资料,可以尝试看看



