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

时间:2012-06-06 17:23:09

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

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

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

1 个答案:

答案 0 :(得分:6)

您需要查看RasGetProjectionInfo函数并使用之前检索到的HRASCONN指针。 RASP_PppIp应该是传入的rasprojection值,以获取包含您的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

希望有所帮助!