我正在搞乱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
等。
如果这不正常,我应该看到什么?
答案 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。
这很糟糕的做法,但为了确保跨平台的兼容性,它可能被认为是必要的邪恶。