在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