问题标签 [iphelper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
22659 浏览

c# - 如何在 C# 中将 IP 地址字符串解析为 uint 值?

我正在编写使用 Windows IP Helper API 的 C# 代码。我试图调用的函数之一是“ GetBestInterface ”,它采用 IP 的“uint”表示。我需要的是解析 IP 的文本表示以创建“uint”表示。

我通过 Google 找到了一些示例,例如this onethis one,但我很确定应该有一种标准方法来使用 .NET 实现这一目标。唯一的问题是,我找不到这种标准方式。IPAddress.Parse 似乎是在正确的方向,但它没有提供任何获取“uint”表示的方式......

还有一种使用 IP Helper 的方法,使用ParseNetworkString,但同样,我宁愿使用 .NET - 我相信我对 pInvoke 的依赖越少越好。

那么,任何人都知道在 .NET 中执行此操作的标准方法吗?

0 投票
8 回答
5353 浏览

windows - 如何找出连接到 Internet 的 NIC?

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

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

对于这个问题,你有什么其他的解决方案吗?

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

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

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

@Till:就像史蒂夫·穆恩(Steve Moon)所说,依赖适配器的地址是有风险的,因为您对内部网络设置做了很多假设。

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

0 投票
1 回答
1811 浏览

windows-vista - GetIfEntry 和 netsh 之间的 MTU 不匹配

我正在开发通过 UDP 运行的伪传输层软件,提供可靠的面向连接的传输,作为 TCP 的替代方案。为了最大化网络效率,我们在初始化时查询“最佳”网络适配器的 MTU。

在线搜索我发现您可以使用以下 netsh 命令从命令提示符(不是 C++ API)查询相同的值

令人不安的问题是,虽然 row.dwMtu 可能设置为 1500,但在发送笔记本电脑上窥探网络流量表明我们的数据包被分割成 1300 字节的数据包。netsh 还报告 MTU 为 1300。

显然 netsh 命令报告的值是实际使用的值。任何人都知道我可以调用什么 API 来获得与 netsh 相同的值?

0 投票
3 回答
1929 浏览

python - 在 python 中使用 Win32 IPHelper API 的问题

我正在尝试创建用于获取网络参数的 python 模块。我正在使用 ctypes 并且有一些问题。

函数 __getInterfaces_win2k() 适用于 python 2.5 和 2.6,但不适用于 python 2.7(python.exe 中 0x1e001759 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000010。)

函数 __getInterfaces_win_after_win2k() 在任何版本的 python 中都不起作用(同样的错误)。

有时,在崩溃程序之前打印必要的信息。我尝试将几乎所有值与 C 中的程序进行比较。一切正常。非常感谢任何帮助。

0 投票
1 回答
442 浏览

windows - Network Adaptro 是否配置了 IP 地址?如何使用 vc++/Windows api 进行检查?

嗨,任何人都可以分享有关使用 dhcp 或手动配置了 IP 地址或未配置网络适配器的信息。如何使用 vc++/Windows api 进行检查?

0 投票
2 回答
12281 浏览

interface - 适配器和网络接口有什么区别?

很难理解有关 IP Helper Functions 的 MSDN 文档。适配器和网络接口有什么区别?

0 投票
1 回答
531 浏览

delphi - 如何通过 Windows API GetExtendedTCpTable 检测新的 TCP 连接

我制作了一个应用程序来观看本地 pc 的活动 tcp/udp 连接。现在,我的连接列表是静态的,如何使其成为动态的?我尝试使用 Timer 事件,但 GetExtendedTCPTable 返回完整的连接列表。我只希望将新连接添加到我的 listView 中。是否有一些 API 可以做同样的事情?还是我必须手动跟踪所有连接,比较它们,然后添加到显示?

提前致谢

0 投票
1 回答
2505 浏览

c# - 获取每个连接的带宽统计信息

我需要确定类似于 TCPView 可以执行的每个进程的网络使用统计信息。

示例 http://img513.imageshack.us/img513/861/6601f15814544055a590e26.png

因此,在您因发布此问题此问题的副本而向我开枪之前,我想指出,这些都没有可以帮助我真正做到这一点的彻底答案。

我一直在做研究,显然有很多方法可以列出活动连接及其相关进程,无论是 netstat 还是其他 Windows API,如IpHlpAPI.dll

现在,从我所做的谷歌搜索来看,我没有找到太多 - 除了这些模糊的术语:GetPerTcpConnectionEStatsGetPerTcp6ConnectionEStats。大概分别用于 IPv4 和 IPv6 上的 TCP。现在我正在阅读它应该能够做我需要做的事情。但是,这仍然忽略了 UDP。这些在 TCPViewer 工作的 XP 系统上也不可用。

我会很满意将它们用于 TCP,但问题是,我似乎找不到任何关于如何从 C# 中使用它们的示例。

所以我想这一切都归结为以下几个问题:

  • 有人真的知道 TCPView 是怎么做的吗?
  • 如何为 TCP 使用 GetPerTcpConnectionEStats?或者它甚至可以完成我的建议吗?
  • 是否有另一种适用于 UDP 的已知替代方案?

这样做的重点是查看进程本身的独立带宽使用情况。不计算总系统带宽使用量。

提前感谢您的任何和所有答案。

0 投票
2 回答
1335 浏览

vb.net - GetBestInterface 的托管替代方案?

我完全没有使用 C(或任何其他非托管语言)编程的背景,但我想在我的 .NET 应用程序中使用 IP Helper API 中的GetBestInterface函数。我试图了解如何使用 P/invoke 调用来调用本机方法,但有很多事情对我来说没有意义(例如托管代码中的类型如何映射到非托管类型)。

System.Net 命名空间中是否有隐藏在某个地方的替代函数可以做大致相同的事情?或者我可以使用现有的基类结合一些魔法来编写自己的替代方案吗?因为在我看来,这基本上就是:魔法。据我所知,该方法如何完成它的工作并没有真正的解释......

编辑

我刚刚在类上发现了 LocalEndPoint 属性System.Net.Sockets.Socket,我认为这在这方面可能非常有用。据我了解,它将代表我进行最佳接口选择,我只需要获取与本地端点对应的 NIC。

0 投票
1 回答
751 浏览

winapi - 更改默认网关时出现分段错误

我在 Qt4 上编写了一个简单的应用程序来修改网络适配器参数,为此我有一个名为 的插槽setInterfaceParams,实现如下:

当我单击连接到 slot 的按钮时,出现setInterfaceParams分段错误。如果我评论method01,什么都不会发生,当我使用method02时会发生一些事情。我在一个简单的 c++ 应用程序上尝试了这个功能,它工作正常,在 Windows XP SP3 上测试。