C#检查网络是否连接的方法
2018-02-28 20:29
746 查看
C# 检查网络是否连接 在网上查到有几种方式检查网络是否连接,测试了一下,第一种方式受到ping时延的影响,在某些不支持ping的地址或者网段甚至不可用,因此建议采用方法2 1. 调用 cmd 中的 ping 命令,分析输出信息来确定网络是否连接 // 使用 ping 命令来判断 ,txtIP 文本框输入一个有效的远程主机 ip System.Diagnostics.Process proIP=new System.Diagnostics.Process();
proIP.StartInfo.FileName="cmd.exe";
proIP.StartInfo.UseShellExecute = false;
proIP.StartInfo.RedirectStandardInput = true;
proIP.StartInfo.RedirectStandardOutput = true;
proIP.StartInfo.RedirectStandardError = true;
proIP.StartInfo.CreateNoWindow = true;// 不显示 cmd 窗口
proIP.Start();
proIP.StandardInput.WriteLine("ping "+this.txtIP.Text.Trim());
proIP.StandardInput.WriteLine("exit");
string strResult=proIP.StandardOutput.ReadToEnd();
if(strResult.IndexOf("(0% loss)")!=-1)
this.txtShow.Text="Ping 通了! ";
else if(strResult.IndexOf("(100% loss)")!=-1)
this.txtShow.Text=" 无法 Ping 通! ";
else
this.txtShow.Text=" 数据有丢失! "
proIP.Close();2. 使用InternetGetConnectedState () 函数这个win32 API 在系统 system32 文件夹中 winInet.dll 中 ,可以用来判断是否联网和上网的方式是 Modem 还是 LAN 等
//使用DllImport需导入命名空间
using System.Runtime.InteropServices;
//InternetGetConnectedState返回的状态标识位的含义:
private const int INTERNET_CONNECTION_MODEM = 1;
private const int INTERNET_CONNECTION_LAN = 2;
private const int INTERNET_CONNECTION_PROXY = 4;
private const int INTERNET_CONNECTION_MODEM_BUSY = 8;
[DllImport( "winInet.dll ")]
//声明外部的函数:
private static extern bool InternetGetConnectedState(
ref int dwFlag,
int dwReserved
);
static void Main(string[] args)
{
int dwFlag = 0;
string netstatus = "";
if (!InternetGetConnectedState(ref dwFlag, 0))
Console.WriteLine("未联网!");
else
{
if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0)
netstatus += " 采用调治解调器上网 /n";
if ((dwFlag & INTERNET_CONNECTION_LAN) != 0)
netstatus += " 采用网卡上网 /n";
if ((dwFlag & INTERNET_CONNECTION_PROXY) != 0)
netstatus += " 采用代理上网 /n";
if ((dwFlag & INTERNET_CONNECTION_MODEM_BUSY) != 0)
netstatus += " MODEM被其他非INTERNET连接占用 /n";
}
Console.WriteLine(netstatus);
Console.ReadLine();
}
3.举例:
首先我们导入含有判断电脑是否联网的.dll并声明函数:
//导入判断网络是否连接的 .dll
[DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
//判断网络状况的方法,返回值true为连接,false为未连接
public extern static bool InternetGetConnectedState(out int conState, int reder); 至此,便可直接调用InternetGetConnectedState函数实现是否联网的判断了:int n = 0;
if (InternetGetConnectedState(out n, 0))
{
MessageBox.Show("yes");
}
else
{
MessageBox.Show("No");
}
proIP.StartInfo.FileName="cmd.exe";
proIP.StartInfo.UseShellExecute = false;
proIP.StartInfo.RedirectStandardInput = true;
proIP.StartInfo.RedirectStandardOutput = true;
proIP.StartInfo.RedirectStandardError = true;
proIP.StartInfo.CreateNoWindow = true;// 不显示 cmd 窗口
proIP.Start();
proIP.StandardInput.WriteLine("ping "+this.txtIP.Text.Trim());
proIP.StandardInput.WriteLine("exit");
string strResult=proIP.StandardOutput.ReadToEnd();
if(strResult.IndexOf("(0% loss)")!=-1)
this.txtShow.Text="Ping 通了! ";
else if(strResult.IndexOf("(100% loss)")!=-1)
this.txtShow.Text=" 无法 Ping 通! ";
else
this.txtShow.Text=" 数据有丢失! "
proIP.Close();2. 使用InternetGetConnectedState () 函数这个win32 API 在系统 system32 文件夹中 winInet.dll 中 ,可以用来判断是否联网和上网的方式是 Modem 还是 LAN 等
//使用DllImport需导入命名空间
using System.Runtime.InteropServices;
//InternetGetConnectedState返回的状态标识位的含义:
private const int INTERNET_CONNECTION_MODEM = 1;
private const int INTERNET_CONNECTION_LAN = 2;
private const int INTERNET_CONNECTION_PROXY = 4;
private const int INTERNET_CONNECTION_MODEM_BUSY = 8;
[DllImport( "winInet.dll ")]
//声明外部的函数:
private static extern bool InternetGetConnectedState(
ref int dwFlag,
int dwReserved
);
static void Main(string[] args)
{
int dwFlag = 0;
string netstatus = "";
if (!InternetGetConnectedState(ref dwFlag, 0))
Console.WriteLine("未联网!");
else
{
if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0)
netstatus += " 采用调治解调器上网 /n";
if ((dwFlag & INTERNET_CONNECTION_LAN) != 0)
netstatus += " 采用网卡上网 /n";
if ((dwFlag & INTERNET_CONNECTION_PROXY) != 0)
netstatus += " 采用代理上网 /n";
if ((dwFlag & INTERNET_CONNECTION_MODEM_BUSY) != 0)
netstatus += " MODEM被其他非INTERNET连接占用 /n";
}
Console.WriteLine(netstatus);
Console.ReadLine();
}
3.举例:
首先我们导入含有判断电脑是否联网的.dll并声明函数:
//导入判断网络是否连接的 .dll
[DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
//判断网络状况的方法,返回值true为连接,false为未连接
public extern static bool InternetGetConnectedState(out int conState, int reder); 至此,便可直接调用InternetGetConnectedState函数实现是否联网的判断了:int n = 0;
if (InternetGetConnectedState(out n, 0))
{
MessageBox.Show("yes");
}
else
{
MessageBox.Show("No");
}
相关文章推荐
- C#检查网络是否连接的方法
- C#检查网络是否连接的方法
- Acrobat 版本校验异常,请检查网络连接是否正常:NotAllowedError;安全性设置禁止访问本属性或方法。
- 【转】 C#中检查网络是否连通的二种方法
- C#检查网络是否可以连接互联网
- C#中检查网络是否连通的二种方法
- C#中检查网络是否连通的二种方法
- 检测网络是否连接的两种方法(C#)
- Error:System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误,请检查远程连接是否开启。解决方法
- C# 检查网络是否连通 判断远程文件是否存在 C#获取程序路径的方法中需要注意的地方
- C#中检查网络是否连通的二种方法
- c# 判断网络是否连接
- linux下检查网络是否正常的取巧方法
- 检查网络是否连接正常
- C#常用的写LOG、读取INI和网络是否畅通的静态方法
- (转)检查网络是否连接正常
- android中判断是否连接网络的方法
- c# 判断网络是否连接
- 【C# MySQL】如何检查MySQL的connector/net连接是否成功
- c#检测网络连接问题我没有看到好的方法(转)