'/' 真的是一个可以用 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.
这是非常糟糕的做法,但它可能被认为是确保跨平台兼容性的必要之恶。
我在搞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.
这是非常糟糕的做法,但它可能被认为是确保跨平台兼容性的必要之恶。