Closed GoogleCodeExporter closed 9 years ago
请看: ** 网卡[1]: eth0 ** 网卡[2]: wlan0 ** 网卡[3]: vboxnet0 ** 网卡[4]: pan0 ** 网卡[5]: wlan0:avahi ** 网卡[6]: vboxnet0:avahi ** 网卡[7]: pan0:avahi ** 网卡[8]: usbmon1 ** 网卡[9]: usbmon2 ** 网卡[10]: usbmon3 ** 网卡[11]: usbmon4 ** 网卡[12]: usbmon5 ** 网卡[13]: usbmon6 ** 网卡[14]: usbmon7 ** 网卡[15]: usbmon8 ?? 请选择网卡[1-17]: 1 ** 您选择了第[1]块网卡。 一共15个让选择的是1-17 ** 网卡[1]: eth0 ** 网卡[2]: wlan0 ** 网卡[3]: vboxnet0 ** 网卡[4]: pan0 ** 网卡[5]: usbmon1 ** 网卡[6]: usbmon2 ** 网卡[7]: usbmon3 ** 网卡[8]: usbmon4 ** 网卡[9]: usbmon5 ** 网卡[10]: usbmon6 ** 网卡[11]: usbmon7 ** 网卡[12]: usbmon8 ?? 请选择网卡[1-14]: 16 ** 您选择了第[14]块网卡。 写的是16 ,说我选择的是14 ,可是列举只到了12 源码对应的函数 static int getAdapter() { pcap_if_t *alldevs, *d; int num = 0, avail = 0, i; char errbuf[PCAP_ERRBUF_SIZE]; if (pcap_findalldevs(&alldevs, errbuf)==-1 || alldevs==NULL) { printf("!! 查找网卡失败: %s\n", errbuf); return -1; } for (d=alldevs; d!=NULL; d=d->next) { num++; if (!(d->flags & PCAP_IF_LOOPBACK) && strcmp(d->name, "any")!=0) { printf("** 网卡[%d]:\t%s\n", num, d->name); avail++; i = num; } } if (avail == 0) { pcap_freealldevs(alldevs); printf("!! 找不到网卡!\n"); return -1; } if (avail > 1) { printf("?? 请选择网卡[1-%d]: ", num); scanf("%d", &i); if (i < 1) i = 1; else if (i > num) i = num; } printf("** 您选择了第[%d]块网卡。\n", i); for (d=alldevs; i>1; d=d->next, i--); strncpy(nic, d->name, sizeof(nic)-1); pcap_freealldevs(alldevs); return 0; } 这个错误应该是由于num++的位置,如下修改则可以正确。 for (d=alldevs; d!=NULL; d=d->next) { if (!(d->flags & PCAP_IF_LOOPBACK) && strcmp(d->name, "any")!=0) { num++; printf("** 网卡[%d]:\t%s\n", num, d->name); avail++; i = num; } } 当然,如果另有它用,可能就是不Bug,只不过我还没有明白~
Original issue reported on code.google.com by chinache...@gmail.com on 2 Dec 2010 at 1:12
chinache...@gmail.com
Attachments:
感谢您对Bug进行提交,会尽快处理。
Original comment by kuunw...@gmail.com on 10 Dec 2010 at 12:17
kuunw...@gmail.com
Original comment by www.eh...@gmail.com on 21 May 2011 at 10:42
www.eh...@gmail.com
Original issue reported on code.google.com by
chinache...@gmail.com
on 2 Dec 2010 at 1:12Attachments: