3

代码找不到任何设备,我想知道 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);
    }


}
4

3 回答 3

8

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

你以 root 身份运行它吗?普通用户将无法打开或检查这些设备。

就我个人而言,我发现 pcap_lookupdev 相当没用,因为您无法真正控制它为您提供的设备。

于 2010-09-19T14:32:54.910 回答
0

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

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

这里,#表示root用户,gcc是GNU Compiler Collection,-lpcap表示使用libpcap库

于 2015-04-18T16:54:23.027 回答
0

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

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

为我工作。

于 2016-03-02T22:41:35.853 回答