gpt4 book ai didi

windows - 您如何找出哪个 NIC 已连接到 Internet?

转载 作者:可可西里 更新时间:2023-11-01 14:02:02 29 4
gpt4 key购买 nike

考虑以下设置:带有 LAN 接口(interface)和 WiFi 接口(interface)(所有新笔记本电脑的标准配置)的 Windows PC。每个接口(interface)都可能与网络连接或断开连接。我需要一种方法来确定哪个适配器是连接到互联网的适配器 - 特别是,如果它们都连接到不同的网络,一个连接到互联网,一个不连接到互联网。

我目前的解决方案是使用 IPHelper 的“GetBestInterface”函数并为其提供 IP 地址“0.0.0.0”。

对于这个问题,您还有其他建议吗?

根据一些答案,让我详细说明一下:

  • 我需要这个,因为我有一个产品必须选择绑定(bind)到哪个适配器。我无法控制网络设置或产品运行所在的主机,因此我需要一个尽可能稳健且假设尽可能少的解决方案。
  • 我需要在代码中执行此操作,因为这是产品的一部分。

@Chris Upchurch:这让我依赖于 google.com 的正常运行(通常不是问题)以及可能安装的任何允许 ping 的个人防火墙。

@Till:正如 Steve Moon 所说,依赖适配器的地址是有风险的,因为您对内部网络设置做了很多假设。

@Steve Moon:查看路由表听起来是个好主意,但我并没有自己应用路由逻辑,而是尝试使用如上所述的“GetBestInterface”。我相信它应该做的正是您在回答中概述的内容,但我不太确定。我不愿意实现自己的“路由逻辑”的原因是,与使用由更多“硬核”网络人员编写和测试的库/API 相比,我更容易出错。

最佳答案

从技术上讲,没有“连接到 Internet”。真正的问题是,哪个接口(interface)可路由到所需地址。现在,您正在查询“默认路线” - 如果不存在到目的地的特定路线,则适用该路线。但是,您忽略了任何特定路线。

幸运的是,对于 99.9% 的家庭用户来说,这就可以了。他们不太可能有很多路由表,并且 GetBestInterface 会自动优先选择有线而不是无线 - 所以你应该做好。为你搞砸的 0.1% 的案例添加一个覆盖选项,然后就到此为止。

但是,对于公司用途,您应该对特定目的地使用 GetBestInterface - 否则,如果有人与您的目的地在同一个 LAN 上,您就会遇到问题(这意味着您应该使用“内部”接口(interface),而不是“外部”)或具有到您目的地的特定路由(例如,我的内部网络可以与您目的地的网络对等)。

话又说回来,我不确定你打算用这个“连接到互联网”的适配器做什么,所以这可能没什么大不了的。

关于windows - 您如何找出哪个 NIC 已连接到 Internet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38864/

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