【发布时间】:2016-02-21 02:41:56
【问题描述】:
我在搞乱 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等。
如果这不正常,我应该看到什么?
【问题讨论】:
-
除非 pcap 使用特别奇怪的命名法,否则这不是有效的设备名称。我最好的猜测是 pcap_lookupdev 正在返回一个 UTF-16 字符串(这是 Windows 的本机编码),因此当您将其打印为窄字符串时,您只会看到第一个字符。在对 printf() 的调用中尝试
%ws看看是否有任何不同。 -
%ws确实有所作为。它输出:\Device\NPF_{BF9D6116-...}
标签: windows network-programming libpcap winpcap