Certo, perché quello è l'indirizzo di "loopback" 127.0.0.1 che è uguale per tutti i computer!Originariamente inviato da fatina biondina
solo ke su qualsiasi makkina mi da sempre lo stesso indirizzo ip![]()
Oppure puoi enumerare tutte le interfacce di rete:codice:#include <stdio.h> #include <unistd.h> #include <netdb.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main (void) { char hname[256]; struct hostent* he; char *addr; if (gethostname (hname, sizeof (hname)) == 0) { printf ("Hostname: %s\n", hname); he = gethostbyname (hname); if (he != NULL) { addr = inet_ntoa (*(struct in_addr*) he->h_addr_list[0]); printf ("Address: %s\n", addr); } } return 0; }
Sorgenti testati su Linux (Slackware 9.1)codice:#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/socket.h> #include <sys/types.h> #include <net/if.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> char *getifaddr (char *ifname) { int fd; struct ifreq ifr; char *addr = NULL; struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_ifru.ifru_addr; if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return NULL; memset (&ifr, 0, sizeof (ifr)); strcpy (ifr.ifr_name, ifname); sin->sin_family = AF_INET; if (ioctl (fd, SIOCGIFADDR, &ifr) == 0) addr = inet_ntoa (sin->sin_addr); close (fd); return addr; } int main (void) { struct if_nameindex *ifni; ifni = if_nameindex (); while (ifni->if_name != NULL) { printf ("Interface %s %s\n", ifni->if_name, getifaddr (ifni->if_name)); ifni++; } return 0; }

Rispondi quotando