【发布时间】:2008-09-02 05:16:23
【问题描述】:
考虑以下设置: 具有 LAN 接口和 WiFi 接口(任何新笔记本电脑的标准)的 Windows PC。每个接口都可能与网络连接或断开连接。我需要一种方法来确定哪个适配器是连接到 Internet 的适配器 - 具体来说,如果它们都连接到不同的网络,一个连接到 Internet,一个没有连接到 Internet。
我当前的解决方案是使用 IPHelper 的“GetBestInterface”函数并为其提供 IP 地址“0.0.0.0”。
对于这个问题,你有什么其他的建议可以解决吗?
根据一些答案,让我详细说明:
- 我需要这个,因为我有一个必须选择要绑定到哪个适配器的产品。我无法控制网络的设置或产品运行所在的主机,因此我需要一个尽可能稳健且假设尽可能少的解决方案。
- 我需要在代码中执行此操作,因为这是产品的一部分。
@Chris Upchurch:这使我依赖于 google.com 的正常运行(通常不是问题)以及任何可能安装的个人防火墙以允许 ping。
@Till:就像 Steve Moon 所说,依赖适配器的地址是有风险的,因为你对内部网络设置做了很多假设。
@Steve Moon:查看路由表听起来是个好主意,但我没有自己应用路由逻辑,而是尝试使用如上所述的“GetBestInterface”。我相信它应该做的正是您在回答中概述的内容,但我不确定。我不愿意实现自己的“路由逻辑”的原因是,与使用由更多“核心”网络人员编写和测试的库/API 相比,我出错的可能性更大。
【问题讨论】:
标签: windows networking iphelper