libpcap steps (1) 使用pcap_findalldevs列出裝置

來源:互聯網
上載者:User

libpcap版本1.3.0-PRE-GIT

#include <stdio.h>#include <string.h>#include <stdlib.h>#define __USE_BSD#include <sys/types.h>#include <pcap.h>#define Debug(format, ...) fprintf(stderr, "%s:%d: "format "\n", __FILE__, __LINE__, ##__VA_ARGS__)#define assert_(expr_)do {if (!(expr_)) {Debug("在函數 `%s'中: 斷言錯誤: " #expr_, __FUNCTION__); exit (-1);} } while (0)#define pcap_assert(func_) assert_(func_!=-1)static char buf[10000];

注意這裡在include "pcap.h"之前,一定要先#define __USE_BSD 然後再include "sys/types.h",否則會出現這樣的錯誤:

/usr/local/include/pcap/pcap.h:126:2: 錯誤:未知的類型名‘u_short’/usr/local/include/pcap/pcap.h:171:2: 錯誤:未知的類型名‘u_int’/usr/local/include/pcap/pcap.h:172:2: 錯誤:未知的類型名‘u_int’/usr/local/include/pcap/pcap.h:173:2: 錯誤:未知的類型名‘u_int’/usr/local/include/pcap/pcap.h:236:30: 錯誤:未知的類型名‘u_char’/usr/local/include/pcap/pcap.h:237:9: 錯誤:未知的類型名‘u_char’/usr/local/include/pcap/pcap.h:351:30: 錯誤:未知的類型名‘pcap_handler’/usr/local/include/pcap/pcap.h:351:44: 錯誤:未知的類型名‘u_char’

原因還沒有弄清。還有另外一個宏叫做 #define __FAVOR_BSD 也許以後會用到。

前面的聲明部分都寫好以後,後面的操作其實很容易,一步就搞定了。

int main(){//find devicepcap_if_t *alldevs;pcap_assert(pcap_findalldevs(&alldevs, buf));int i=0;for (pcap_if_t *pdev = alldevs; pdev; pdev=pdev->next)Debug("#%d: %s %s", ++i, pdev->name, pdev->description? pdev->description:"");pcap_freealldevs(alldevs);return 0;}

編譯:

gcc --std=c99 -lpcap dev_test.c -o dev_test

運行結果

viktor@buxiang-OptiPlex-330:~/proj/pcap$ sudo ./dev_test dev_test.c:37: #1: peth0 dev_test.c:37: #2: eth0 dev_test.c:37: #3: usbmon1 USB bus number 1dev_test.c:37: #4: usbmon2 USB bus number 2dev_test.c:37: #5: usbmon3 USB bus number 3dev_test.c:37: #6: usbmon4 USB bus number 4dev_test.c:37: #7: usbmon5 USB bus number 5dev_test.c:37: #8: any Pseudo-device that captures on all interfacesdev_test.c:37: #9: lo 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.