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

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

#include  #include  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; } 

编译时我遇到错误:

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

我不能使用#include 因为它只能在Linux上使用。

您显示的代码无法编译,因为它是为Linux设计的,而不是Windows。 Windows上没有标头。

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

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

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

结构

 struct ifaddrs *id; 

是一个链表。 你必须遍历它并检查地址的存在

 if(id->fa_addr) // print statements