typedef struct pcap_addr pcap_addr_t;
struct pcap_addr {
struct pcap_addr *next; /*指向下一个元素的指针*/
struct sockaddr *addr; /* IP地址 */
struct sockaddr *netmask; /* 网络掩码 */
struct sockaddr *broadaddr; /* 广播地址 */
struct sockaddr *dstaddr; /* P2P目的地址*/
};
按照定义,IP地址应该是存放在 addr为指针的结构体内,奇怪的是在我的机器调试发现,通过pcap_findalldevs(&m_t_all_pdevs,m_t_errbuf)获取网卡列表后,IP地址全部存放在next->addr里,而addr里存放IP的位置全是0,网上有解释说,之所以存在next指针,是因为同一块网卡可以绑定多个IP,但是我的机器又没有经过特殊配置,个人觉着默认的话,IP也应该在addr里。
IP地址全部出现在next->addr,求解释。
上图:
struct pcap_addr {
struct pcap_addr *next; /*指向下一个元素的指针*/
struct sockaddr *addr; /* IP地址 */
struct sockaddr *netmask; /* 网络掩码 */
struct sockaddr *broadaddr; /* 广播地址 */
struct sockaddr *dstaddr; /* P2P目的地址*/
};
按照定义,IP地址应该是存放在 addr为指针的结构体内,奇怪的是在我的机器调试发现,通过pcap_findalldevs(&m_t_all_pdevs,m_t_errbuf)获取网卡列表后,IP地址全部存放在next->addr里,而addr里存放IP的位置全是0,网上有解释说,之所以存在next指针,是因为同一块网卡可以绑定多个IP,但是我的机器又没有经过特殊配置,个人觉着默认的话,IP也应该在addr里。
IP地址全部出现在next->addr,求解释。
上图:
我第一个啊!
没有获取IP怎么理解?单纯执行pcap_findalldevs(&m_t_all_pdevs,m_t_errbuf)这个函数,在m_t_all_pdevs里没有IP信息么?是需要再执行一个函数,才能使IP出现在addr里面么?应该不会是这样吧~
struct sockaddr {
unsigned short sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address */
};
正常转换后得到的是192.168.1.1