C++獲取本機IP地址列表

mx3y 9年前發布 | 2K 次閱讀 C/C++

/*

  • main.c

  • 2013-01-09 chrisniu1984@gmail.com *
  • [BUILD]
  • gcc -o main main.c -Wall /

include <stdio.h>

include <netdb.h>

include <ifaddrs.h>

// 系統定義的結構,貼在這里方便大家查閱,也可man getifaddrs查看。 // struct ifaddrs { // struct ifaddrs ifa_next; / Next item in list / // char ifa_name; / Name of interface / // unsigned int ifa_flags; / Flags from SIOCGIFFLAGS / // struct sockaddr ifa_addr; / Address of interface / // struct sockaddr ifa_netmask; / Netmask of interface / // union { // struct sockaddr ifu_broadaddr; // / Broadcast address of interface / // struct sockaddr ifu_dstaddr; // / Point-to-point destination address / // } ifa_ifu; // #define ifa_broadaddr ifa_ifu.ifu_broadaddr // #define ifa_dstaddr ifa_ifu.ifu_dstaddr // void ifa_data; / Address-specific data */ // };

int main(int argc, char *argv) { struct ifaddrs ifa; if (getifaddrs(&ifa) != 0) { return -1; }

for (; ifa!=NULL; ifa=ifa->ifa_next) {
    struct sockaddr_in *sin = (struct sockaddr_in*)ifa->ifa_addr;
    if (sin->sin_family != AF_INET) {
        continue;
    }

    unsigned char *b = (unsigned char *)(&sin->sin_addr.s_addr);
    printf("%s\t%u.%u.%u.%u\n", ifa->ifa_name, b[0], b[1], b[2], b[3]);
}

return 0;

}</pre>

 本文由用戶 mx3y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!