J'essaie de trouver l'adresse des appareils dans mon ordinateur. Jusqu'à présent, j'ai réussi à obtenir la liste des périphériques (avec pcap_findalldevs) mais je ne peux pas comprendre comment accéder à ces adresses. J'ai vu cette page de manuel - http://www.tcpdump.org/pcap3_man.html où est écrit quelque chose comme ceTrouver l'adresse de l'appareil avec libpcap
adresses un pointeur vers le premier élément d'une liste d'adresses pour l'interface
Et puis ce
Chaque élément de la liste des adresses est de type pcap_addr_t, et a les membres suivants:
J'ai donc ce code
pcap_if_t *alldevsp , *device;
char *devname , **devs;
int count = 1 , n;
if(pcap_findalldevs(&alldevsp, errbuf))
{
printf("Error: %s" , errbuf);
exit(1);
}
device = alldevsp;
pcap_addr_t list;
printf("\nDevices:\n");
while(device != NULL)
{
printf("%d. %s - %s", count++ , device->name , device->description);
list = device->addresses[0];
printf("address: %s\n",(char *) inet_ntoa(list.addr));
device = device->next;
}
La compilation est OK, mais lorsque je tente de l'exécuter i obtenir ceci:
Devices: 1. eth0 - (null) addres: 144.208.30.8 2. wlan0 - (null) addres: 128.213.30.8 Segmentation fault
Je peux comprendre que segfault, parce que le troisième périphérique est usb et il n'a pas d'adresse, mais ceux IP pour eth0 et wlan0 sont faux, ils ne correspondent pas.
Qu'est-ce que je fais mal?
Comment savez-vous que les adresses IP sont erronées? ifconfig? Que faire si vous l'exécutez d'une manière différente: http://stackoverflow.com/questions/4139405/how-to-know-ip-address-for-interfaces-in-c/4139893#4139893 – chrisaycock
Je sais qu'ils ont tort à cause de ifconfig :) En plus de ça, ils changent chaque fois que j'exécute un programme – Pirozek