热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网络流量在线分析系统的设计与实现

编译环境:visualstudio2019,安装并配置winpcap和pthreads库函数1配置环境1.1安装vscode参考微信公众号软件安装管家。

编译环境:visual studio2019,安装并配置winpcap和pthreads库函数



1 配置环境




1.1 安装vscode



参考微信公众号 软件安装管家。


1.2 安装MinGW-w64



下载地址:添加链接描述

安装参考博客:MinGW-w64安装配置全过程

第一步:安装
在这里插入图片描述
在这里插入图片描述
第二步:配置环境变量

在这里插入图片描述
输入命令gcc -v可以查看版本信息,如下图,
在这里插入图片描述


1.3 下载WinPcap



下载地址:添加链接描述

下载解压后的目录:

在这里插入图片描述


1.4 Winpcap环境配置



此配置方法针对 2019 Visual Studio。

以获取已连接的网络适配器列表为例,编写一个简单的Winpcap程序。

第一步:点击项目“属性”

第二步:包含目录 和 库目录 分别加入winpcap的include 和 lib/x64目录

winpcap的头文件路径:WpdPack\Include

winpcap的库文件路径:WpdPack\Lib\目录下:wpcap.lib, Packet.lib;如果是开发64位程序,则使用x64包中的相应库

在这里插入图片描述
第三步:附加依赖项中分别加入如下三个库文件

ws2_32.lib
wpcap.lib
Packet.lib

在这里插入图片描述
第四步:编写获取网络适配器列表的代码main.cpp

在这里插入图片描述

参考代码:参考代码

大致过程:


  • 首先通过pcap_findalldevs_ex获取网络适配器列表

  • 网络适配器列表信息保持在一个pcap_if_t指针中,它是一个经典的C式链表结构,可以通过这个指针遍历所有的网络适配器

  • 最后,调用pcap_freealldevs释放资源

运行结果:

在这里插入图片描述【补充:网络适配器】

网络适配器就是网卡,在“设备管理器”中可以查看本机电脑的网络适配器列表,如下图,

在这里插入图片描述


1.5 pthreads环境配置



下载地址:pthreads-w32-2-9-1

配置过程:


  • 下载pthreads-w32-2-9-1-release.zip文件,解压生成三个文件夹 Pre-built.2、pthreads.2、QueueUserAPCEx

  • 项目属性 — vc++目录 — 包含目录 — 添加 xxx\pthreads-w32-2-9-1-release\Pre-built.2\include

  • 项目属性 — vc++目录 — 库目录 — 添加xxx\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64

  • 项目属性 — 链接器 — 输入 — 附加依赖项 — 添加pthreadVC2.lib

如果代码运行报错:找不到pthreadVC2.dll。解决方法:将pthreadVC2.dll拷贝到项目的源文件夹下,如

在这里插入图片描述

包含头文件pthread.h后,运行可能会提示错误 “1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 ” ,则需要在代码中加入#pragma comment(lib, "pthreadVC2.lib")

遇到错误“int pcap_findalldevs_ex(char *,pcap_rmtauth *,pcap_if_t **,char *)”: 无法将参数 1 从“const char [9]”转换为“char *”,依次点击项目->属性->C/C+±>语言->符合模式,将原来的“是”改为“否”即可。

参考博客:vs2019 c语言配置pthreads多线程


2 实验步骤



实验内容:

设计并实现一个网络流量的分析系统。该系统具有以下功能:

1、实时抓取指定时间间隔中的网络数据。

2、网络协议分析与显示,确认网络协议类型,抓取数据流量大小、方向。

3、将网络数据包聚合成数据流,将源IP、目的IP、源端口、目的端口及协议 等流量数据存储。

4、计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。在这些统计数据的基础上分析不同网络应用的流量特征。

系统流程图:

在这里插入图片描述

项目目录结构:

在这里插入图片描述


3 运行结果




  • result.data文件内容:
    在这里插入图片描述

  • vscode运行结果:
    在这里插入图片描述
    在这里插入图片描述

  • 将traffic.data文件修改后缀名为traffic.pcap,并用wireshark打开,对比vscode流量分析截图,可看出两者捕获内容是一致的,如下图:
    在这里插入图片描述

参考博客:讲解、源码


推荐阅读
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • 本文介绍了SPOJ2829题目的解法及优化方法。题目要求找出满足一定条件的数列,并对结果取模。文章详细解释了解题思路和算法实现,并提出了使用FMT优化的方法。最后,对于第三个限制条件,作者给出了处理方法。文章最后给出了代码实现。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • 线程漫谈——线程基础
    本系列意在记录Windwos线程的相关知识点,包括线程基础、线程调度、线程同步、TLS、线程池等。进程与线程理解线程是至关重要的,每个进程至少有一个线程,进程是线程的容器,线程才是真正的执行体,线程必 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 51nod3221祝寿(反向建图优化)
    题目链接感觉忘记了好多东西。求有向图中其余点到一个点的最短距离可以将该图翻转后rundijkstra#include#include ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
author-avatar
当初
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有