// libpcap 开发 /* libpcap是一个用于捕获网络数据包的库,它提供了一组函数和工具,用于在计算机网络上进行数据包捕获、过滤和分析。 在使用libpcap时,你需要在编译和链接你的程序时指定-lpcap选项,以告诉编译器和链接器使用libpcap库。这个选项通常用于Unix-like系统的编译环境,例如在使用GCC编译器时。 */ #include // libpcap头文件 #include #include #include // 网络地址转换函数,如inet_ntoa()->将网络地址转换成“.”点隔的字符串格式 int main(int argc, char const *argv[]) { // 1. 获取可用的网络设备名称 char err_buf[PCAP_ERRBUF_SIZE]; // 错误信息缓冲区 char *dev = pcap_lookupdev(err_buf); // 获取网络设备名称: err_buf用于存储错误信息 // char *dev = pcap_lookupdev(NULL); // NULL表示获取默认网络设备 if (dev != NULL) { printf("网络设备名称: %s\n", dev); } else { printf("获取网络设备名称失败: %s\n", err_buf); return 1; } // 2. 获取网卡的网络号和子网掩码 bpf_u_int32 netip; bpf_u_int32 netmask; if ((pcap_lookupnet(dev, &netip, &netmask, NULL)) == 0) { unsigned char ip[16] = ""; unsigned char mask[16] = ""; inet_ntop(AF_INET, &netip, ip, 16); // inet_ntop()将网络地址转换成“.”点隔的字符串格式 inet_ntop(AF_INET, &netmask, mask, 16); printf("网卡网络号: %s 子网掩码: %s\n", ip, mask); } return 0; }