c# - 在 RasDial 之后获取 IP 地址/接口(interface)号

标签 c# c++ .net network-programming ras

在带有 .NET 的 C++ 中,我试图获取刚刚与 RasDial 连接的 RASCONN 的 IP 地址或接口(interface)名称(我有 HRASCONN 指针)。我发现 MSDN API 令人困惑,经过几个小时的搜索我找不到正确的调用(但它们似乎必须存在)。

如果有更好的方法来做到这一点,这里的目标是拥有一些唯一的标识符,这样当我稍后在我的管理 C# 中调用 NetworkInterface.GetAllNetworkInterfaces() 时,我可以选择正确的连接。

最佳答案

您需要查看 RasGetProjectionInfo 函数并使用您之前检索到的 HRASCONN 指针。 RASP_PppIp 应该是传入的 rasprojection 值,以获取包含您的 IP 地址的 RASPPIP 结构。我会发布一些 C++ 代码供您使用,但这不是我最好的语言并且不想让自己难堪。

这里有一些有用的链接可以帮助您:

RasGetProjectionInfo:http://msdn.microsoft.com/en-us/library/aa377548(v=vs.85).aspx

RASPPPIP:http://msdn.microsoft.com/en-us/library/aa377634(v=vs.85).aspx

由于您的应用程序的一部分似乎正在使用 C#,因此您可能需要考虑使用 CodePlex 上的 DotRas 项目。它是围绕整个 RAS API 的基于 C# 的包装器。要从 DotRas 获取 PPP 信息,您需要:

using DotRas;

var conn = RasConnection.GetActiveConnections().Where(c => c.EntryName == "Your Entry").FirstOrDefault();
RasPppIp ipInfo = conn.GetProjectionInfo(RasProjectionType.IP);

从这里您可以访问 ipInfo.IPAddress 属性以获取您想要的信息。

这是 DotRas 的链接:https://github.com/winnster/DotRas

希望对您有所帮助!

关于c# - 在 RasDial 之后获取 IP 地址/接口(interface)号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919038/

相关文章:

c# - 直接通过对象初始化器填充数组

C#/N 休眠 : Association references unmapped class

c# - Asp.Net Core 中间件中的重定向不呈现目标页面

c++ - 你会禁止我设计和使用这个容器吗?

.net - 测量触发的事件数量?

.net - 如何拦截 Boo 中的方法调用?

c# - C# 是否有(直接)flex/yacc 端口?或者人们为 C# 使用什么词法分析器/解析器?

c++ - 访问对象void pointer c++的成员

c++ - Qt如何将字符串翻译成函数?

c# - 如何模拟从另一个方法调用的方法