我如何知道是不是建立了 *** 连接?
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 上添加 cmdipconfig /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*** 等某些 ***。以上是关于我如何知道是不是建立了 *** 连接?的主要内容,如果未能解决你的问题,请参考以下文章