Io uso seguente codice per stampare tutta l'interfaccia e il suo indirizzo MACChe cosa significa esattamente il nome dell'interfaccia di rete iOS? cos'è pdp_ip? cos'è un p?
- (void)interfaceInfo{
int mib[6];
size_t len;
char *buf;
unsigned char *ptr;
struct if_msghdr *ifm;
struct sockaddr_dl *sdl;
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = AF_LINK;
mib[4] = NET_RT_IFLIST;
char name[128];
memset(name, 0, sizeof(name));
for (int i=1; i<20; i ++) {
if (if_indextoname(i, name)) {
printf("%s ",name);
}else{
continue;
}
if ((mib[5] = if_nametoindex(name)) == 0) {
printf("Error: if_nametoindex error\n");
return NULL;
}
if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {
printf("Error: sysctl, take 1\n");
return NULL;
}
if ((buf = malloc(len)) == NULL) {
printf("Could not allocate memory. error!\n");
return NULL;
}
if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {
printf("Error: sysctl, take 2");
free(buf);
return NULL;
}
ifm = (struct if_msghdr *)buf;
sdl = (struct sockaddr_dl *)(ifm + 1);
ptr = (unsigned char *)LLADDR(sdl);
NSString *macString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",
*ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];
printf(" %s\n",[macString cStringUsingEncoding:NSUTF8StringEncoding]);
free(buf);
}
return nil;
}
ho eseguito il codice su iPhone 5 e l'uscita è
lo0 00:00:00:00:00:00
pdp_ip0 00:00:00:00:00:00
pdp_ip1 00:00:00:00:00:00
pdp_ip2 00:00:00:00:00:00
pdp_ip3 00:00:00:00:00:00
ap1 EA:8D:28:44:32:2F
en0 E8:8D:28:44:32:2F
en1 EA:8D:28:44:32:31
awdl0 4A:79:85:44:5B:4D
//I faked parts data
Voglio sapere qual è il pdp_ip? e qual è l'ap1, en1?
scopro en0 è l'hardware WiFi indirizzo MAC
Does AP1 e EN1 è interfaccia virtuale?
Grazie!
it sta per ethernet, cosa significa ap? E provo ifconfig sul mio mac, non c'è un nome di interfaccia ap. Perché così tante interfacce familiari pdp? Significa che ci sono più di un hardware di dati cellulari, vero? Grazie ! – Aladdin