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

时间:2016-12-14 09:54:23

标签: c windows winapi ip

如何在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上使用。

2 个答案:

答案 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;
相关问题