有人知道我该如何获取局域网IP并将其打印到屏幕上吗?
*我不是指shell,而是指c编程。
**如果你能寄给我一个示例代码,我将不胜感激。

最佳答案

getifaddrs()中的<ifaddrs.h>函数是获取当前接口和相应地址的最简单方法:

#include <stdio.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main()
{
    struct ifaddrs *iflist, *iface;

    if (getifaddrs(&iflist) < 0) {
        perror("getifaddrs");
        return 1;
    }

    for (iface = iflist; iface; iface = iface->ifa_next) {
        int af = iface->ifa_addr->sa_family;
        const void *addr;
        char addrp[INET6_ADDRSTRLEN];

        switch (af) {
            case AF_INET:
                addr = &((struct sockaddr_in *)iface->ifa_addr)->sin_addr;
                break;
            case AF_INET6:
                addr = &((struct sockaddr_in6 *)iface->ifa_addr)->sin6_addr;
                break;
            default:
                addr = NULL;
        }

        if (addr) {
            if (inet_ntop(af, addr, addrp, sizeof addrp) == NULL) {
                perror("inet_ntop");
                continue;
            }

            printf("Interface %s has address %s\n", iface->ifa_name, addrp);
        }
    }

    freeifaddrs(iflist);
    return 0;
}

关于c - 获取LAN IP并打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4656824/

10-10 20:36