在 RasDial 之后获取 IP 地址/接口号码

本文关键字:接口 号码 地址 IP RasDial 之后 获取 | 更新日期: 2023-09-27 18:36:33

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

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

在 RasDial 之后获取 IP 地址/接口号码

您需要查看 RasGetProjectionInfo 函数并使用之前检索到的 HRASCONN 指针。RASP_PppIp应该是传入的rasprojection value,以获取包含您的IP地址的RASPPPIP结构。我会发布一些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

希望对您有所帮助!