c#判断网络连接状态
运行效果
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Net.NetworkInformation;
namespaceConsoleApplication1
{
classProgram
{
publicstaticvoidMain(string[]args)
{
stringurl="www.baidu.com;www.sina.com;www.cnblogs.com;www.google.com;www.163.com;www.csdn.com";
string[]urls=url.Split(newchar[]{";"});
CheckServeStatus(urls);
Console.ReadKey();
}
///<summary>
///检测网络连接状态
///</summary>
///<paramname="urls"></param>
publicstaticvoidCheckServeStatus(string[]urls)
{
interrCount=0;//ping时连接失败个数
if(!LocalConnectionStatus())
{
Console.WriteLine("网络异常~无连接");
}
elseif(!MyPing(urls,outerrCount))
{
if((double)errCount/urls.Length>=0.3)
{
Console.WriteLine("网络异常~连接多次无响应");
}
else
{
Console.WriteLine("网络不稳定");
}
}
else
{
Console.WriteLine("网络正常");
}
}
#region网络检测
privateconstintINTERNET_CONNECTION_MODEM=1;
privateconstintINTERNET_CONNECTION_LAN=2;
[System.Runtime.InteropServices.DllImport("winInet.dll")]
privatestaticexternboolInternetGetConnectedState(refintdwFlag,intdwReserved);
///<summary>
///判断本地的连接状态
///</summary>
///<returns></returns>
privatestaticboolLocalConnectionStatus()
{
System.Int32dwFlag=newInt32();
if(!InternetGetConnectedState(refdwFlag,0))
{
Console.WriteLine("LocalConnectionStatus--未连网!");
returnfalse;
}
else
{
if((dwFlag&INTERNET_CONNECTION_MODEM)!=0)
{
Console.WriteLine("LocalConnectionStatus--采用调制解调器上网。");
returntrue;
}
elseif((dwFlag&INTERNET_CONNECTION_LAN)!=0)
{
Console.WriteLine("LocalConnectionStatus--采用网卡上网。");
returntrue;
}
}
returnfalse;
}
///<summary>
///Ping命令检测网络是否畅通
///</summary>
///<paramname="urls">URL数据</param>
///<paramname="errorCount">ping时连接失败个数</param>
///<returns></returns>
publicstaticboolMyPing(string[]urls,outinterrorCount)
{
boolisconn=true;
Pingping=newPing();
errorCount=0;
try
{
PingReplypr;
for(inti=0;i<urls.Length;i++)
{
pr=ping.Send(urls[i]);
if(pr.Status!=IPStatus.Success)
{
isconn=false;
errorCount++;
}
Console.WriteLine("Ping"+urls[i]+" "+pr.Status.ToString());
}
}
catch
{
isconn=false;
errorCount=urls.Length;
}
//if(errorCount>0&&errorCount<3)
// isconn=true;
returnisconn;
}
#endregion
}
}
相关文章
- C#控件splitContainer用法
- c#面试题抽象类和接口的区别-金三银四面试:C#程序员经常遇到的30道基础面试题,想你所想
- c#中实现文件拖放打开的方法
- c#连接字符串数据库服务器端口号.net状态服务器端口号
- 关于c#中枚举类型支持显示中文的扩展说明
- C#给picturebox控件加图片选中状态的2个方法
- c#使用linq技术创建xml文件的小例子
- C#获取局域网MAC地址的简单实例
- C#获取存储过程返回值和输出参数值的方法
- C#条件语句、循环语句(if、while)
- c#的dataset离线数据集示例
- c#连接sqlserver数据库、插入数据、从数据库获取时间示例
- 基于C#实现Windows服务状态启动和停止服务的方法
- C#采用OpenXml给word里面插入图片