Linux 中获取指定网口的IP地址(c实现)

来源:互联网 发布:淘宝护肤品 编辑:程序博客网 时间:2024/05/03 12:25
/* *功能:传入一个网口名,获取相应的IP地址 * */#include <stdio.h>#include <ifaddrs.h>#include <netinet/in.h>#include <string.h>#include <arpa/inet.h>char *interface2ip(char *infName) {        struct ifaddrs *ifAddrStruct;        void *tmpAddrPtr=NULL;        char ip[16];        memset(ip, 0, sizeof(ip));        static char infIP[16];        getifaddrs(&ifAddrStruct);        while (ifAddrStruct != NULL)        {        if (ifAddrStruct->ifa_addr->sa_family==AF_INET && 0 == strcmp(ifAddrStruct->ifa_name,infName))        {                tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;                inet_ntop(AF_INET, tmpAddrPtr, ip, INET_ADDRSTRLEN);                //printf("eth0 ip :%s\n",ip);                strcpy(infIP,ip);                //printf("infIP is :%s\n",infIP);        }            ifAddrStruct=ifAddrStruct->ifa_next;        }        //free ifaddrs        freeifaddrs(ifAddrStruct);        //return 0;        return infIP;}int main(){char infName[] = "eth0";printf("the result is : %s\n",interface2ip(infName));    return 0;}
结果:

0 0
原创粉丝点击