首页 > 编程知识 正文

qt获取网卡信息,winipcfg查看网卡物理地址

时间:2023-05-04 05:38:44 阅读:112053 作者:4133

WINDOWS要求WINPCAP获取网卡列表和网卡信息,并使用原始套接字发送MAC包以进行工作。 由于WINDOWS套接字只能支持到IP层,而且似乎无法到达MAC层,因此找到WINPCAP并完成了MAC数据包的发送和接收

获取网卡列表pcap_if_t *alldev; char errbuf[PCAP_ERRBUF_SIZE]; if(pcap_findalldevs(alldev,errbuf )=-1 ) fprintf ) stderr,' errorinpcap _ find all devs 3360 % sn ',errroror }for(d=*alldev; d; d=d-next (打印(addr 3360 % s (n ),d-name ); printf(%d.%s(n ),num,d-name ); printf (d-addresses-addr-sa_family=% HD (n ),d-addresses-addr-sa _ family ); pcap_lookupnet(d-name,net_ip,net_mask,errbuf ); net_ip_address.s_addr=net_ip; printf(%d.%d.%d.%d(%n ),(net_ip24 )0x00ff,(net_ip16 )0x00ff,(net_ip8 )0x00ff,) net _ ipip //format printf (网络地址: %s n (,net_ip_string ); if(d-description ) printf ) ) (%s ) (n ),d-description ); ELSEprintf () (nodescriptionavailable ) (n ); }本以为可以获取网卡列表获取IP信息,但alldev为空,没有IP信息,只有网卡的名称和说明,pcap_lookupnet函数获取IP和掩码,实现网段

获取网卡的IP和掩码pcap_if_t *d=alldev; lpadapter=packetopenadapter (d-name ); npf_if_addr buffer[4]; 长甲=4; PLONG NEntries=a; 分组网络接口(d-name,buffer,NEntries ); //获取网卡的IP和掩码//打印网卡的IP地址系列和IP printf (buffer.IP地址. ss _ family=% dn (,buffer [0]. printf () (sockaddr_in* ) buffer.IPAddress )-sin_addr=%sn ),net_ip_string ); oid数据ppacket_oid_data ) malloc )6sizeof (p packet _ oid _ data ) ); 要打开网络设备并获取网卡的IP和掩码,必须转换结构类型并正确打印IP信息

获取网卡的MAC地址//获取网卡的MAC地址,打印oid数据- oid=oid _ 802 _3_ permanent _ address; oid数据长度=6; zero memory (oid数据-数据,6 ); satus=packetrequest(lpadapter,FALSE,oid数据); printf (themacaddressoftheadapteris ).2x: ).2x: ).2x: ).2x(n ),)未指定的货币包关闭适配器(lpadapter; 关闭//设备,完成IP信息和MAC获取

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。