【问题标题】:Get VPN Ip address获取 VPN IP 地址
【发布时间】:2013-01-16 05:26:10
【问题描述】:

如何从 PPP 或 PPTT vpn 连接中获取 ip?

我知道 VPN 连接的名称,那么我该如何过滤

var nics = NetworkInterface.GetAllNetworkInterfaces();

只获取名为“VPNConnection”的vpn接口,并获取给定的ip地址?

【问题讨论】:

  • 你有没有尝试过任何代码..?这是您可以尝试的提示/谷歌foreach (var item in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces())尝试并报告如果您有其他问题,这是一个非常简单的任务,信不信由你..
  • using System.Net.NetworkInformation; 可能也需要添加这个

标签: c# vpn network-interface


【解决方案1】:

我已为此案提出申请。使用带有以下命令的批处理文件,我创建了一个执行 .bat 文件并将 ip 存储在变量 ip 中的进程

            //make a batch file and write this in it
        File.WriteAllText(FolderPath + "\\getip.bat", "@echo off \r\n FOR /F \"tokens=1-6 delims=:. \" %%a in ('netsh int ip show address \"SanadConnectVPN\" ^|find \"IP Address\"') do set IP=%%c.%%d.%%e.%%f \r\n echo %IP%");

        var newProcess = new Process
        {
            StartInfo =
            {
                FileName = FolderPath + "\\getip.bat",
                WindowStyle = ProcessWindowStyle.Normal
            }
        };
        newProcess.StartInfo.RedirectStandardOutput = true;
        newProcess.StartInfo.UseShellExecute = false;
        newProcess.Start();
        string ip = newProcess.StandardOutput.ReadToEnd();
        newProcess.WaitForExit();
        MessageBox.Show(ip);
        return ip

【讨论】:

    【解决方案2】:

    也许:

    using System.Linq;
    
    var vpn = NetworkInterface.GetAllNetworkInterfaces()
                              .First(x => x.Name == "VPNConnection");
    

    编辑:哎呀我还没说完:

    var ip = vpn.GetIPProperties().UnicastAddresses.First(x => x.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).Address.ToString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 2015-02-27
      • 1970-01-01
      • 2012-11-03
      • 2010-11-04
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      相关资源
      最近更新 更多