Her*_*shi 5 windows networking iphelper
考虑以下设置:一台带有 LAN 接口和 WiFi 接口(任何新笔记本电脑的标准)的 Windows PC。每个接口都可能与网络连接或断开。我需要一种方法来确定哪个适配器连接到互联网 - 具体来说,如果它们都连接到不同的网络,一个连接到互联网,一个没有连接到互联网。
我当前的解决方案涉及使用IPHelper的“ GetBestInterface ”函数并为其提供IP地址“0.0.0.0”。
对于这个问题,您还有其他建议的解决方案吗?
根据一些答案,让我详细说明:
@Chris Upchurch:这让我依赖于 google.com 的启动(通常不是问题)以及任何可能安装的允许 ping 的个人防火墙。
@Till:就像 Steve Moon 所说,依赖适配器的地址是有风险的,因为你对内部网络设置做了很多假设。
@Steve Moon:查看路由表听起来是个好主意,但我不是自己应用路由逻辑,而是尝试使用如上所述的“GetBestInterface”。我相信它应该做的正是您在答案中概述的内容,但我不太确定。我不愿意实现自己的“路由逻辑”的原因是,与使用由更多“硬核”网络人员编写和测试的库/API相比,我出错的可能性更大。
从技术上讲,不存在“连接到互联网”。真正的问题是哪个接口可路由到所需的地址。现在,您正在查询“默认路线” - 如果不存在到目的地的特定路线,则应用该路线。但是,您忽略了任何特定路线。
幸运的是,对于 99.9% 的家庭用户来说,这就能解决问题。他们不太可能有太多的路由表,并且 GetBestInterface 会自动优先选择有线而不是无线 - 所以你应该很好。为你搞砸的 0.1% 的情况添加一个覆盖选项,然后就到此为止了。
但是,对于企业用途,您应该对特定目标使用 GetBestInterface - 否则,如果有人与您的目标位于同一 LAN 上,您将会遇到问题(这意味着您应该采用“内部”接口,而不是“外部”接口) )或有到您目的地的特定路由(例如,我的内部网络可以与您目的地的网络对等)。
话又说回来,我不确定你打算用这个“连接到互联网”的适配器做什么,所以这可能不是什么大问题。
| 归档时间: |
|
| 查看次数: |
6280 次 |
| 最近记录: |