如何在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;
}
我在编译时遇到错误:
致命错误C1083:无法打开包含文件:'net / if.h':没有这样的文件或目录。
我不能使用#include <net/if.h>
,因为它只能在Linux上使用。
答案 0 :(得分:1)
您展示的代码无法编译,因为它是专为Linux设计的,而不是Windows。 Windows上没有<net/if.h>
标题。
getifaddrs()
返回本地接口地址的链接列表。但是在Windows上根本不存在getifaddrs()
(除非您找到自定义的第三方实现)。
Windows上的等效项是在XP及更早版本上使用Win32 GetAdaptersInfo()
函数,或在Vista及更高版本上使用GetAdaptersAddresses()
函数。这两个函数都返回详细适配器信息的链接列表(不仅仅是地址)。
在MSDN上的文档中提供了C示例。
答案 1 :(得分:-2)
结构
#> hash
#=> {:b=>nil, :c=>4, :v=>7}
hash.sort_by { |_,value| value || Float::INFINITY }.to_h
#=> {:c=>4, :v=>7, :b=>nil}
是一个链接列表。你必须遍历它并检查地址是否存在
struct ifaddrs *id;