很难理解IP Helper功能的MSDN文档.什么是适配器和网络接口之间的区别?
我正在使用该GetAdapterAddresses()方法获取系统上所有接口的IP地址.
我需要找到每个接口的广播地址.我可以使用IP地址和子网掩码来计算,但我无法在IP_ADAPTER_ADDRESSES结构中看到子网掩码.
有没有办法检索子网掩码使用GetAdapterAddresses()?
我正在编写使用Windows IP Helper API的C#代码.我试图调用的函数之一是" GetBestInterface ",它采用IP的"uint"表示.我需要的是解析IP的文本表示以创建'uint'表示.
我已经通过谷歌找到了一些例子,比如这个或者这个例子,但我很确定应该有一种标准的方法来实现这一点.唯一的问题是,我找不到这种标准方式.IPAddress.Parse似乎是在正确的方向,但它没有提供任何方式获得'uint'表示...
还有一种方法可以使用IP Helper,使用ParseNetworkString,但同样,我宁愿使用.NET - 我相信我越少依赖pInvoke就越好.
那么,有谁知道在.NET中执行此操作的标准方法?
考虑以下设置:一台带有 LAN 接口和 WiFi 接口(任何新笔记本电脑的标准)的 Windows PC。每个接口都可能与网络连接或断开。我需要一种方法来确定哪个适配器连接到互联网 - 具体来说,如果它们都连接到不同的网络,一个连接到互联网,一个没有连接到互联网。
我当前的解决方案涉及使用IPHelper的“ GetBestInterface ”函数并为其提供IP地址“0.0.0.0”。
对于这个问题,您还有其他建议的解决方案吗?
根据一些答案,让我详细说明:
@Chris Upchurch:这让我依赖于 google.com 的启动(通常不是问题)以及任何可能安装的允许 ping 的个人防火墙。
@Till:就像 Steve Moon 所说,依赖适配器的地址是有风险的,因为你对内部网络设置做了很多假设。
@Steve Moon:查看路由表听起来是个好主意,但我不是自己应用路由逻辑,而是尝试使用如上所述的“GetBestInterface”。我相信它应该做的正是您在答案中概述的内容,但我不太确定。我不愿意实现自己的“路由逻辑”的原因是,与使用由更多“硬核”网络人员编写和测试的库/API相比,我出错的可能性更大。
我需要确定与TCPView可以做的类似的每进程网络使用情况统计信息.
示例http://img513.imageshack.us/img513/861/6601f15814544055a590e26.png
因此,在你拍我发布这个问题的副本或者这个问题之前,我想指出的是,这些问题都没有一个彻底的答案可以帮助我实际做到这一点.
我一直在做研究,很明显有许多方法可以列出活动连接及其相关进程,无论是netstat还是其他Windows API,如IpHlpAPI.dll.
现在,从谷歌的做法来看,我没有找到太多 - 除了这些模糊的术语:GetPerTcpConnectionEStats和GetPerTcp6ConnectionEStats.大概分别用于TCP over IPv4和IPv6.现在我正在阅读它所谓的能够做我需要做的事情.但是,这仍然留下了UDP.这些也不适用于TCPViewer工作的XP系统.
我会对使用TCP的那些感到满意,但问题是,我似乎无法找到如何从C#中使用它们的任何示例.
所以我想这一切归结为这几个问题:
这一点的全部意义在于查看进程本身的独立带宽使用情况.不计算系统总带宽使用情况.
提前感谢任何和所有答案.