我想编写一个应用程序来检测Windows计算机系统上所有网络连接的IP地址,以及连接到该系统的所有以太网设备的IP。有没有一种简单的方法可以使用Windows API以编程方式执行此操作?
我正在寻找与这个问题的答案相当的C ++:
How do I check for a network connection?
以及如何枚举连接的以太网设备。
我知道Beej的网络指南,我实际上(慢慢地)正在通过它,但我认为如果有更快,更简单的方法,这将是太棒了。我没有太多运气就搜遍了StackOverflow。
如果有人有任何建议,或者可以指出我有用的指南,那就太棒了!
谢谢!
- R的
答案 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
}