获取IP地址的C代码

cod*_*eak 2 c network-programming

如何使用C代码获取本地计算机的IP地址?

如果有多个接口,那么我应该能够显示每个接口的IP地址.

注意:请勿在C代码中使用ifconfig之类的任何命令来检索IP地址.

Mic*_*kis 10

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>

int main()
{
    int fd;
    struct ifreq ifr;

    fd = socket(AF_INET, SOCK_DGRAM, 0);

    ifr.ifr_addr.sa_family = AF_INET;

    snprintf(ifr.ifr_name, IFNAMSIZ, "eth0");

    ioctl(fd, SIOCGIFADDR, &ifr);

    /* and more importantly */
    printf("%s\n", inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));

    close(fd);
}
Run Code Online (Sandbox Code Playgroud)

如果要枚举所有接口,请查看该getifaddrs()函数 - 如果您使用的是Linux.