使用Windows API检测网卡和以太网设备的IP地址

时间:2011-07-26 05:39:50

标签: c++ windows ip-address

我想编写一个应用程序来检测Windows计算机系统上所有网络连接的IP地址,以及连接到该系统的所有以太网设备的IP。有没有一种简单的方法可以使用Windows API以编程方式执行此操作?

我正在寻找与这个问题的答案相当的C ++:
How do I check for a network connection?
以及如何枚举连接的以太网设备。

我知道Beej的网络指南,我实际上(慢慢地)正在通过它,但我认为如果有更快,更简单的方法,这将是太棒了。我没有太多运气就搜遍了StackOverflow。

如果有人有任何建议,或者可以指出我有用的指南,那就太棒了!

谢谢!

- R的

2 个答案:

答案 0 :(得分:3)

GetAdaptersInfo :检索本地计算机的适配器信息。

DWORD GetAdaptersInfo(
  __out    PIP_ADAPTER_INFO pAdapterInfo,
  __inout  PULONG pOutBufLen
);

GetAdaptersInfo的MSDN。

答案 1 :(得分:0)

要获取计算机的所有IP地址,请使用以下代码

char chHostName[MAX_PATH];
if (gethostname(chHostName, sizeof(chHostName)) == SOCKET_ERROR)
{
    return "0.0.0.0";
}
struct addrinfo hints;
struct addrinfo *result = NULL;

// Setup the hints address info structure
// which is passed to the getaddrinfo() function
ZeroMemory( &hints, sizeof(hints) );
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;

dwRetval = getaddrinfo(chHostName, NULL, &hints, &result);



for(ptr=result; ptr != NULL ;ptr=ptr->ai_next) 
{
//Parse the address
}