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 上可用。
您展示的代码无法编译,因为它是为 Linux 而不是 Windows 设计的。<net/if.h>
Windows 上没有标题。
getifaddrs()
返回本地接口地址的链表。但getifaddrs()
在 Windows 上根本不存在(除非您找到自定义的 3rd 方实现)。
Windows 上的等效项是GetAdaptersInfo()
在 XP 及更早版本上使用 Win32功能,或GetAdaptersAddresses()
在 Vista 及更高版本上使用该功能。这两个函数都返回详细适配器信息的链接列表(不仅仅是地址)。
MSDN 上的文档中提供了 C 示例。