WinPcap网络编程入门——0. 环境配置及系列介绍
2022/1/26 11:04:43
本文主要是介绍WinPcap网络编程入门——0. 环境配置及系列介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
WinPcap网络编程入门——0. 环境配置及系列介绍
系列教程章节直达:
Winpcap网络编程入门——1. 获取设备列表;
说明:本教程适用于网络编程开发人员入门,将从底层分析 WinPcap 的执行过程,结合一些实际用例来学习 WinPcap网络编程。
Pcap 技术是网络底层开发的重要工具之一,允许应用程序避开成熟的网络协议,直接处理网络数据包。Pcap 技术直接对进出网卡的原始数据包进行处理,即用户自己对要传输的网络数据按照协议的首部格式进行封装,用户自己完成协议需要封装的内容,操作的是原始数据包套接字。
套接字是操作系统提供给应用程序的编程接口,经过了操作系统处理(网络协议处理),提供的数据是剥离了网络协议的网络数据。
WinPcap 是 Windows 平台下在数据链路层进行网络数据捕获和网络分析的开源库,它避开了操作系统对网络数据的隐藏,直接对数据链路层的数据分组进行处理,也就是原始的网络数据进行操作,可以方便地进行网络数据的封装和处理,它提供的功能主要有:
- 捕获经由主机的数据包
- 根据应用程序提供的规则过滤数据包
- 发送原始数据包到网络上
- 统计和收集网络流量信息
关于 WinPcap 的介绍就到这里,需要了解更多可以去官网(https://www.winpcap.org/)
1. WinPcap 资料获取
使用 WinPcap 必须安装其软件以及获取对应的 DLL、底层库:
- WinPcap4.1 安装包:链接:https://pan.baidu.com/s/1q5s06B1nhXwoMr7do_FUGg 提取码:joeh(安装后需重启)
- WpdPack4.1 库:链接:https://pan.baidu.com/s/1xlV-jMpxMaQhHBPrhIAEzw 提取码:4oea (直接放到你的编程通用位置即可)
- WinPcap 中文技术文档:链接:https://pan.baidu.com/s/16UDUnpwEpK6MjBcGZa–0A 提取码:8kr5
2. WinPcap 环境配置
1. VC++6.0 环境配置
- 在 vc++6.0 中设定 Include 目录: 打开 vc++6.0 菜单,Tools -> Option -> Directories,在 include files 中添加 …\wpdpack\Include 目录(就是你存放 WpdPack4.1 库的文件夹下的 include 文件夹);
- 在 vc++6.0 中设定 Library 目录: 在 Library files 中添加 …\wpdpack\Lib 目录;
- 在 VC++的新建工程中,在 Project -> settings -> Link,在 Object/library modules 中加上 wpcap.lib。
2. vs2022 环境配置(其它版本基本相同)
-
新建一个空项目并添加一个空的源文件;
-
点击菜单栏 项目 -> 项目属性
-
选择 C/C++ -> 预处理器,在预处理器定义中添加 WPCAP 和 HAVE_REMOTE 两个宏定义,然后点击 应用;
-
选择 链接器 -> 输入,在附加依赖项添加 wpcap.lib 、 ws2_32.lib 、 Packet.lib 三个库,然后点击应用;
-
选择 VC++ 目录,添加 WpdPack 文件夹中的包含目录( include 目录),然后点击应用;
-
选择 VC++ 目录,添加 WpdPack 文件夹中的库目录( Lib 目录),然后点击应用;
-
选择 C/C++ -> 语言,将 符合模式 设置为 否,最后点击确定即可;
-
将解决方案平台设置为 x64
-
vs2022 的环境配置就到这里结束,注意,本教程使用C语言开发,所以需要在项目中新建 .c 文件而不是 .cpp 文件(如果无法直接新建,可以先新建 .cpp 文件,然后修改文件后缀为 .c 即可)
-
测试配置是否完成,复制以下代码到项目中运行,注意是 .c 文件不是 .cpp 文件,否则 vs 会报错!
#define WIN32 // 必须加这条,否则vs不会自动识别 #include <stdio.h> #include <pcap.h> #pragma comment(lib, "wpcap.lib") main() { pcap_if_t* alldevs, * d; int i = 0; char errbuf[PCAP_ERRBUF_SIZE]; if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1) { fprintf(stderr, "Error in pcap_findalldevs_ex: %s\n", errbuf); exit(1); } for (d = alldevs; d != NULL; d = d->next) { printf("%d.%s", ++i, d->name); if (d->description) { printf("(%s)\n", d->description); } else { printf("(No description available)\n"); } } if (i == 0) { printf("\nNo interfaces found! Make sure Winpcap is installed.\n"); return; } // 释放设备 pcap_freealldevs(alldevs); }
运行之后就会显示出已获取到的设备列表了,至此,环境配置就完成了!
接下来我们将学习如何获取到设备,点击跳转下一节。
系列教程章节直达:
Winpcap网络编程入门——1. 获取设备列表;
这篇关于WinPcap网络编程入门——0. 环境配置及系列介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享