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

akr*_*roy 3 .net c# c++ network-programming ras

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

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

Jef*_*inn 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);
Run Code Online (Sandbox Code Playgroud)

从这里,您可以访问ipInfo.IPAddress属性以获取所需的信息.

这是DotRas的链接:http://dotras.codeplex.com

希望有所帮助!

  • 是的,每当Microsoft将Service Pack发布到现有操作系统或启动新操作系统时,我真的只需要更新项目.因此,1.3版本包括今年晚些时候进入RTM的Windows 8计划.我很高兴看到有人在使用它! (2认同)