'/' 真的是一个可以用 pcap 找到的有效设备吗?

Is '/' really a valid device to find with pcap?

我在搞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),后面的代码继续工作(如果需要我可以 post),所以 似乎 这是一个有效的设备,但命名对我来说似乎很奇怪。我来自linux,所以我看惯了ethX,等等

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

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

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

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