我如何知道是不是建立了 *** 连接?

Posted

技术标签:

【中文标题】我如何知道是不是建立了 *** 连接?【英文标题】:How can I know whether a *** connection is established or not?我如何知道是否建立了 *** 连接? 【发布时间】:2012-08-26 23:47:42 【问题描述】:

我有一个 *** 连接。为了建立 *** 连接,必须执行一个 PPTP.bk 文件。运行此文件并输入凭据后,*** 连接就建立了。

我正在尝试以编程方式连接和断开 *** 连接。 问题是在 Windows 中没有创建 *** 连接,因此我需要能够随时验证任何 *** 连接,如果不存在则建立一个。

【问题讨论】:

【参考方案1】:

如果存在 *** 连接且连接正常,您将始终找到一个名为“tun0”的网络接口。所以使用NetworkInterface的相同方法,我写了一个简单的代码:

public static boolean is***Ok()
    List<String> networks = new ArrayList<>();
    try 
        for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) 
            if (networkInterface.isUp()) networks.add(networkInterface.getName());
        
     catch (Exception e) 
        e.printStackTrace();
    
    return networks.contains("tun0");

【讨论】:

【参考方案2】:

对我来说,我发现这很有帮助,但我想在遍历所有接口并找到已启动的接口后检查特定的 *** 名称...

            if (NetworkInterface.GetIsNetworkAvailable())
            
                NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
                foreach (NetworkInterface Interface in interfaces)
                
                    if (Interface.OperationalStatus == OperationalStatus.Up)
                    
                        if (Interface.Description.Contains("***_Name"))
                        
                            connected = true;
                            break;
                                                   
                    
                
            

【讨论】:

【参考方案3】:

在我的网络驱动程序中,描述文本中有Cisco。这是一个更新的版本,只有几行:

public static class ***Check

    public static bool IsOn()
    
        return ((NetworkInterface.GetIsNetworkAvailable())
                && NetworkInterface.GetAllNetworkInterfaces()
                                   .FirstOrDefault(ni => ni.Description.Contains("Cisco"))?.OperationalStatus == OperationalStatus.Up);
    

【讨论】:

【参考方案4】:

稍作修改 - 这是对我有用的代码。

public bool CheckFor***Interface()
    
        if (NetworkInterface.GetIsNetworkAvailable())
        
            NetworkInterface[] interfaces = 
NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface Interface in interfaces)
            
                // This is the Open*** driver for windows. 
                if (Interface.Description.Contains("TAP-Windows Adapter")
                  && Interface.OperationalStatus == OperationalStatus.Up)
                
                        return true;
                
            
        
        return false;
    

【讨论】:

在 Windows 上添加 cmd ipconfig /all 以显示适配器的描述,然后可以将“TAP-Windows 适配器”字符串更改为您选择的 ***,例如"PANGP 虚拟以太网适配器"【参考方案5】:

我使用 NetworkInterface 类检查 *** 连接状态。这是我为此目的编写的代码:

if (NetworkInterface.GetIsNetworkAvailable())

    NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
    foreach (NetworkInterface  Interface in interfaces)
    
        if (Interface.OperationalStatus == OperationalStatus.Up)
        
            if ((Interface.NetworkInterfaceType == NetworkInterfaceType.Ppp) && (Interface.NetworkInterfaceType != NetworkInterfaceType.Loopback))
            
                IPv4InterfaceStatistics statistics = Interface.GetIPv4Statistics();
                MessageBox.Show(Interface.Name + " "  + Interface.NetworkInterfaceType.ToString() + " " + Interface.Description);
            
            else
            
                MessageBox.Show("*** Connection is lost!");
            
        
    

【讨论】:

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable 是完整的模块路径。 这不适用于 Nord*** 等某些 ***。

以上是关于我如何知道是不是建立了 *** 连接?的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql建立临时表的问题(新手入门)

高分提问 如何建立VPN连接服务器

如何将与 GitHub 的连接从 SSH 更改为 HTTPS?

如何确定 JMS 连接是不是存在?

我们如何让应用用户知道连接是通过 SSL 建立的?

如何在不打开端口的情况下建立 TCP/IP 连接?