c#判断网络连接状态_C#教程-查字典教程网
c#判断网络连接状态
c#判断网络连接状态
发布时间:2017-01-07 来源:查字典编辑
摘要:运行效果复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.T...

运行效果

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.Net.NetworkInformation;

namespace ConsoleApplication1

{

class Program

{

public static void Main(string[] args)

{

string url = "www.baidu.com;www.sina.com;www.cnblogs.com;www.google.com;www.163.com;www.csdn.com";

string[] urls = url.Split(new char[] { ';' });

CheckServeStatus(urls);

Console.ReadKey();

}

/// <summary>

/// 检测网络连接状态

/// </summary>

/// <param name="urls"></param>

public static void CheckServeStatus(string[] urls)

{

int errCount = 0;//ping时连接失败个数

if (!LocalConnectionStatus())

{

Console.WriteLine("网络异常~无连接");

}

else if (!MyPing(urls, out errCount))

{

if ((double)errCount / urls.Length >= 0.3)

{

Console.WriteLine("网络异常~连接多次无响应");

}

else

{

Console.WriteLine("网络不稳定");

}

}

else

{

Console.WriteLine("网络正常");

}

}

#region 网络检测

private const int INTERNET_CONNECTION_MODEM = 1;

private const int INTERNET_CONNECTION_LAN = 2;

[System.Runtime.InteropServices.DllImport("winInet.dll")]

private static extern bool InternetGetConnectedState(ref int dwFlag, int dwReserved);

/// <summary>

/// 判断本地的连接状态

/// </summary>

/// <returns></returns>

private static bool LocalConnectionStatus()

{

System.Int32 dwFlag = new Int32();

if (!InternetGetConnectedState(ref dwFlag, 0))

{

Console.WriteLine("LocalConnectionStatus--未连网!");

return false;

}

else

{

if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0)

{

Console.WriteLine("LocalConnectionStatus--采用调制解调器上网。");

return true;

}

else if ((dwFlag & INTERNET_CONNECTION_LAN) != 0)

{

Console.WriteLine("LocalConnectionStatus--采用网卡上网。");

return true;

}

}

return false;

}

/// <summary>

/// Ping命令检测网络是否畅通

/// </summary>

/// <param name="urls">URL数据</param>

/// <param name="errorCount">ping时连接失败个数</param>

/// <returns></returns>

public static bool MyPing(string[] urls, out int errorCount)

{

bool isconn = true;

Ping ping = new Ping();

errorCount = 0;

try

{

PingReply pr;

for (int i = 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;

return isconn;

}

#endregion

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类