zoukankan      html  css  js  c++  java
  • Libcap的简介及安装

    Libpcap 简介

    libpcap 是unix/linux 平台下的网络数据包捕获函数包,

      大多数网络监控软件都以它为基础。

      Libpcap 可以在绝大多数类unix 平台下工作.

      Libpcap 应用程序框架

      Libpcap 提供了系统独立的用户级别网络数据包捕获接口,并充分考虑到应用程序的可移植性。Libpcap可以在绝大多数类unix 平台下工作,在windows 平台下,一个与libpcap 很类似的函数包 winpcap 提供捕获功能,其官方网站是http://winpcap.polito.it/ 。

      Libpcap 软件包可从 http://www.tcpdump.org/ 下载,然后依此执行下列三条命令即可安装,但如果希望libpcap 能在linux 上正常工作,则必须使内核支持"packet" 协议,也即在编译内核时 打开配置选项CONFIG_PACKET( 选项缺省为打开) 。

      ./configure

      ./make

      ./make install

      libpcap 源代码由20 多个C 文件构成,但在 Linux 系统下并不是所有文件都用到。可以通过查看命令make 的输出了解实际所用的文件。本文所针对的libpcap 版本号为1.1.1 ,网络类型为常规以太网。Libpcap应用程序从形式上看很简单.

      

    Libpcap 安装

    以下命令适用于 ubuntu 等 deb 包管理式 linux 系统,如果是 Fedora 或 RedHat 以及 SUSE 等基於 RPM 包管理的 linux 系统可用 yum install 代替 apt-get install

    1.                 安装 gcc g++ 编译器

    命令: sudo apt-get install build-essential

    C 语言经典的入门例子是 *Hello World ,下面是一示例代码:
    #include <stdio.h>
      int main(void) 

    printf("Hello, world!/n"); 
    return 0; 

    我们假定该代码存为文件‘hello.c’ 。
    要用 编译该文件,使用下面的命令: $ gcc -Wall hello.c -o hello 
    该命令将文件‘hello.c’ 中的代码编译为机器码并存储在可执行文件 ‘hello’ 中。
    机器码的文件名是通过 选项指定的。该选项通常作为命令行中的最後一个参数。如果被省略,输出文件默认为‘a.out’ 。 如果当前目录中与可执行文件重名的文件已经存在,它将被复盖。 选项 开启编译器几乎所有常用的警告── 。 编译器有很多其他的警告选项,但 是最常用的。默认情况下GCC 不会产生任何警告信息。当编写 C 或 C++ 程序时编译器警告非常有助于检测程序存在的问题。 本例中,编译器使用了 选项而没产生任何警告,因为示例程序是完全合法的。 
    要运行该程序,输入可执行文件的路径如下: $ ./hello Hello, world! 
    这将可执行文件载入内存,并使 CPU 开始执行其包含的指令。 路径 指代当前目录,因此 载入并执行当前目录下的可执行文件 ‘hello’ 。

    2.                 安装 GNU M4

    命令: sudo apt-get install m4

    这个是编译flex 必备的环境,否则会提示“GNU M4 1.4 is required” 的错误

    3.                 安装 flex

    命令: sudo apt-get install flex

    没有flex ,直接安装libpcap 会提示“Your operating system's lex is insufficient to compile libpcap” 错误。

    4.                 编译 bison

    命令: sudo apt-get install bison

    在安装flex 后直接安装libpcap 会提示“don't have both flex and bison;reverting to lex/yacc” 错误,前面安装的是flex ,就需要搭配bison

    5. 编译 libpcap

    上面四步完成后,就可以使用下面三个指令安装libpcap 环境: 切换到libpcap 目录下( 具体可查看libcap目 录下官方提供的install 文档) 
    ./configure 
    make 
    sudo make install

    6. 运行 ldconfig ,至此完成。

    简单的例子测试一下libpcap :
    //device.c 
    #include <stdio.h>
    int main(int argc,char *argv[])

    char *dev, 
    errbuf[PCAP_ERRBUF_SIZE]; 
    dev=pcap_lookupdev(errbuf); 
    if(dev==NULL)

    printf(stderr,"couldn't find default device: %s/n",errbuf); 
    return(2); 

    printf("Device: %s/n",dev); 
    return(0); 

    编译指令:gcc -o device device.c -lpcap 
    备注:编译时要使用libpcap 的参数 -lpcap ,否则会提示“pcap_lookupdev 未定义的引用” 的错误。
    运行指令:./device

    在QT creator 中使用libpcap

    编写代码时在头文件中引入 pcap.h 即可 . 编译时需要在 .pro 工程文件中加入选项

    LIBS   += -L/usr/local/lib /                

                                -lpcap

  • 相关阅读:
    SharePoint 2013 图文开发系列之自定义字段
    SharePoint 2013 图文开发系列之Visual Studio 创建母版页
    SharePoint 2013 图文开发系列之代码定义列表
    SharePoint 2013 图文开发系列之计时器任务
    SharePoint 2013 图文开发系列之应用程序页
    SharePoint 2013 图文开发系列之事件接收器
    SharePoint 2013 图文开发系列之可视化WebPart
    SharePoint 2013 图文开发系列之WebPart
    SharePoint 2013 对二进制大型对象(BLOB)进行爬网
    SharePoint 2013 状态机工作流之日常报销示例
  • 原文地址:https://www.cnblogs.com/zhangdaicong/p/7709998.html
Copyright © 2011-2022 走看看