gpt4 book ai didi

c++ - 如何在 C++ 中读取 Windows 默认网关 IP 地址

转载 作者:可可西里 更新时间:2023-11-01 10:00:08 54 4
gpt4 key购买 nike

有人能告诉我如何在 C++ 中读取默认的 Windows 网关 IP 地址吗?我可以使用 GetAdaptersInfo() 读取所有 IP 地址的列表,但不能读取默认网关 IP 地址。

   GetAdaptersInfo( pAdapterInfo, &BufferLength );
// Iterate the network adapters and print their MAC address.
while( pAdapterInfo )
{
pAdapterInfo = pAdapterInfo->Next; // Get next adapter info
}

这是代码片段,想知道哪个字段为我提供了默认网关。我可以获得列表中每个 IP 地址的网关,但我需要默认网关 IP 地址。

想要这样做的最初原因是选择具有默认网关的 IP 的特定 MAC 地址(从 MAC 地址串中)。当我们在遍历列表时获得多个 MAC 地址,我们认为最好的方法是获取具有默认网关的 IP 的 MAC 地址。我们后来改主意了,会选择有线连接的MAC地址。但我仍然很想知道如何获取默认网关而不是遍历所有适配器。

最佳答案

GetAdaptersInfo给你这个:

GatewayList

Type: IP_ADDR_STRING

The IPv4 address of the gateway for this adapter represented as a linked list of IP_ADDR_STRING structures. An adapter can have multiple IPv4 gateway addresses assigned to it. This list usually contains a single entry for IPv4 address of the default gateway for this adapter.

如果您无法从已有的 GetAdaptersInfo 数据中获取网关,您可能需要发布您的代码。

基本上,您可以通过在命令提示符下运行 ipconfig/all 来“预览”此信息。您会看到网关是按接口(interface)定义的,没有全局网关。 route print 获取路由,您可以看到它们的优先级,这规定是否有效使用了这个或那个网关:这取决于采用哪条路由。

关于c++ - 如何在 C++ 中读取 Windows 默认网关 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118527/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com