/* code from Stackoverflow:http://stackoverflow.com/questions/212528/linux-c-get-the-ip-address-of-local-computer */# Include <stdio.h> #include <sys/types.h> #include <ifaddrs.h> #include <netinet/in.h> #include <string.h> #include <arpa/inet.h>int main (int argc, const char * argv[]) {struct Ifaddrs * ifaddrstruct= NULL; void * TMPADDRPTR=NULL; Getifaddrs (&ifaddrstruct); while (Ifaddrstruct!=null) {if (ifaddrstruct->ifa_addr->sa_family==af_inet) {//Check it is IP4 is a valid IP4 Address tmpaddrptr=& ((struct sockaddr_in *) ifaddrstruct->ifa_addr)->sin_addr; Char Addressbuffer[inet_addrstrlen]; Inet_ntop (Af_inet, Tmpaddrptr, Addressbuffer, Inet_addrstrlen); printf ("%s IP Address%s\n", Ifaddrstruct->ifa_name, Addressbuffer); } else if (IFADDRSTRUCT->IFA_ADDR->SA_FAMILY==AF_INET6) {//Check it is IP6//is a valid IP6 Address tmpaddrptr=& (struct sockaddr_in *) ifaddrstruct->ifa_addr)->sin_addr; Char Addressbuffer[inet6_addrstrlen]; Inet_ntop (Af_inet6, Tmpaddrptr, Addressbuffer, Inet6_addrstrlen); printf ("%s IP Address%s\n", Ifaddrstruct->ifa_name, Addressbuffer); } ifaddrstruct=ifaddrstruct->ifa_next; } return 0;}
C language by enumerating network cards, API interface can view man 7 netdevice--get interface IP address