Linux 下獲取本機IP

http://blog.csdn.net/K346K346/article/details/48231933spa

int main ()
{
/*
    struct ifaddrs *ifap, *ifa;
    struct sockaddr_in *sa;
    char *addr;

    getifaddrs (&ifap);
    for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
        if (ifa->ifa_addr->sa_family==AF_INET) {
            sa = (struct sockaddr_in *) ifa->ifa_addr;
            addr = inet_ntoa(sa->sin_addr);
            printf("Interface: %s\tAddress: %s, %x \n", ifa->ifa_name, addr,sa->sin_addr);
        }
    }

    freeifaddrs(ifap);

*/

/*
//設置爲本機IP,若是獲取地址失敗則使用hostname,這種獲取方式依賴/etc/hosts,獲取不許。
// 獲取本機地址,只取一個
hostent* pHost = gethostbyname(host_name);
if ( pHost != 0 )
{
for ( int i = 0; pHost != 0 && pHost->h_addr_list[i] != 0; i++ )
{
if((unsigned int)((unsigned char*)pHost->h_addr_list[i])[0] == 127)
continue;
char ip_str[16] = {0};
sprintf( ip_str, "%x%x%x%x",(unsigned int)((unsigned char*)pHost->h_addr_list[i])[0],
(unsigned int)((unsigned char*)pHost->h_addr_list[i])[1],
(unsigned int)((unsigned char*)pHost->h_addr_list[i])[2],
(unsigned int)((unsigned char*)pHost->h_addr_list[i])[3]);
host_id_ = ip_str;.net

 
 

break;
}
}
*/code

 

struct ifaddrs *ifap, *ifa;
struct sockaddr_in *sa;blog

getifaddrs (&ifap);
for (ifa = ifap; ifa; ifa = ifa->ifa_next)
{
if (ifa->ifa_addr && ifa->ifa_addr->sa_family==AF_INET)
{
if(strncmp(ifa->ifa_name, "lo", 2) == 0)
continue;ip

sa = (struct sockaddr_in *) ifa->ifa_addr;
char ip_str[16] = {0};
sprintf(ip_str,"%08x", sa->sin_addr);
printf("---%s \n",ip_str);
printf("%d,%d,%d,%d \n",sizeof(sa->sin_addr),sizeof(int),sizeof(unsigned long), sizeof(unsigned long long));
}
}
freeifaddrs(ifap);get

return 0;
}class

相關文章
相關標籤/搜索