在C中查找机器的IP地址?

Nik*_*ora 2 c windows ip winapi

如何在 Windows 上用 C 语言获取本地机器的 IP 地址?我无法在以下代码中获取我机器的 IP 地址:

#include <ifaddrs.h>
#include <stdio.h>

int main()
{
    struct ifaddrs *id;
    int val;
    val = getifaddrs(&id);
    printf("Network Interface Name :- %s\n",id->ifa_name);
    printf("Network Address of %s :- %d\n",id->ifa_name,id->ifa_addr);
    printf("Network Data :- %d \n",id->ifa_data);
    printf("Socket Data : -%c\n",id->ifa_addr->sa_data);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到错误:

致命错误 C1083:无法打开包含文件:“net/if.h”:没有这样的文件或目录。

我无法使用,#include <net/if.h>因为它仅在 Linux 上可用。

Rem*_*eau 5

您展示的代码无法编译,因为它是为 Linux 而不是 Windows 设计的。<net/if.h>Windows 上没有标题。

getifaddrs()返回本地接口地址的链表。但getifaddrs()在 Windows 上根本不存在(除非您找到自定义的 3rd 方实现)。

Windows 上的等效项是GetAdaptersInfo()在 XP 及更早版本上使用 Win32功能,或GetAdaptersAddresses()在 Vista 及更高版本上使用该功能。这两个函数都返回详细适配器信息的链接列表(不仅仅是地址)。

MSDN 上的文档中提供了 C 示例。