是' /'真的是一个有效的设备找到pcap?

时间:2016-02-21 02:41:56

标签: windows network-programming libpcap winpcap

我正在搞乱libpcap,并运行此测试代码:

char* device, errbuff[PCAP_ERRBUF_SIZE];

printf("Looking for device...\n");
device = pcap_lookupdev(errbuff);

if (device == NULL)
{
    fprintf(stderr, "Couldn't find default device: %s\n", errbuff);
    return 1;
}

printf("Device found: %s\n", device);

它有效,但它输出以下内容:

Looking for device...
Device found: \

我在Windows(10)上,后面的代码继续工作(如果需要我可以发布),所以似乎这是一个有效的设备,但是命名对我来说很奇怪。我来自linux,所以我常常看到ethX等。

如果这不正常,我应该看到什么?

1 个答案:

答案 0 :(得分:0)

This appears to be a bug, design limitation, or perhaps just poor documentation in winpcap.

声明pcap_lookupdev函数返回char *但实际返回wchar_t *。我不清楚相关函数是否也是如此,例如,pcap_open_live是否实际上需要UTF-16字符串作为设备名称。如果您的代码有效(没有明确地将字符串转换为ASCII),那么可能所有设备名称参数都是实际上 UTF-16。

这很糟糕的做法,但为了确保跨平台的兼容性,它可能被认为是必要的邪恶。