如何在libpcap中使用“pcap_lookupdev()”?

时间:2010-09-19 14:10:12

标签: c linux libpcap

代码无法找到任何设备,我想知道pcap_lookupdev()做什么?感谢

#include <pcap.h>
int main(int argc, char *argv[])
{
    pcap_t *handle;

    char *dev;// = "eth0";
    char errbuf[PCAP_ERRBUF_SIZE];
    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) {
        fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
        return(2);
    }
    printf("Device: %s\n", dev);
    return(0);

    handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf);
    if (handle == NULL) {
        fprintf(stderr, "Couldn't open device %s: %s\n", dev, errbuf);
        return(2);
    }


}

3 个答案:

答案 0 :(得分:7)

pcap_lookupdev似乎只返回它可以找到的第一个设备(如果有的话),但环回设备除外。

你是以root身份运行的吗?不允许普通用户打开或检查这些设备。

我个人认为pcap_lookupdev相当无用,因为你无法控制它给你的设备。

答案 1 :(得分:0)

编译pcap编程时。您需要在具有root权限的programe文件末尾提及-lpcap。例如。

#gcc YourFileName.c -lpcap
#./a.out
or
#gcc -Wall -o YourFileName YourFileName.c -lpcap
#./YourFileName

这里,#表示root用户,gcc是GNU编译器集合,-lpcap表示使用libpcap库

答案 2 :(得分:0)

代码必须以root身份编译,链接和执行:

sudo gcc -o dev-find dev-find.c lpcap

为我工作。