c#判断网络连接状态

运行效果

代码如下:

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
    }
}

(0)

相关推荐

  • c#判断网络连接状态的示例分享

    复制代码 代码如下: public partial class Form1 : Form { [DllImport("wininet.dll")] private extern static bool getInterState(out int conn, int val); public Form1()  {InitializeComponent();  getNet(); } //判断当前是否连接入Internet网络private void getNet(){int Out;if

  • php计数器的设计与实现第1/2页

    本程序有4个计数器. index.php是一个普通的计数器可以看出总次数和哪个人来这个站点的次数,点几次加几次,不防水. index1.php也是一个防水的计数器可以看出次数和哪个人来这个站点的次数,点几次加几次,防水,5秒加一次. index2.php是一个防水的计数器可以看出总次数和哪个人来这个站点的次数,点几次加几次,防水,2秒加一次. indexa.php是一个普通和防水和图形的计数器3合一的.可以看出总次数和哪个人来这个站点的次数,防水,有图形. 关键语句: 防水的:$sql = "S

  • Redis的使用模式之计数器模式实例

    Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧.锋利.实用,特别适合解决一些使用传统关系数据库难以解决的问题.打算写一系列 Redis 使用模式的文章,深入总结介绍 Redis 常见的使用模式,以供大家参考. 常见汇总计数器 汇总计数是系统常见功能,比如网站通常需要统计注册用户数,网站总浏览次数等等. 使用 Redis 提供的基本数据类型就能实现汇总计数器,通过 incr 命令实现增加操作. 比如注册用户数,基本操作命令如下: 复制代码 代码如下: # 获取注册用户数

  • 一个简单的网站访问JS计数器 刷新1次加1次访问

    复制代码 代码如下: <script language="JavaScript"><!-- var caution = falsefunction setCookie(name, value, expires, path, domain, secure) {        var curCookie = name + "=" + escape(value) +                ((expires) ? "; expires=

  • js计数器代码

    复制代码 代码如下: <script Language="javascript">  var seconds = 10;//记数时间  var handle;//事件柄 //开始记数器  function startTimer() {   handle = setInterval("timer()",1000);  } //结束记数器  function stopTimer() {   clearInterval(handle);   seconds =

  • C#中判断本地系统的网络连接状态的方法

    函数InternetGetConnectedState返回本地系统的网络连接状态. 语法: BOOL InternetGetConnectedState( __out LPDWORD lpdwFlags, __in DWORD dwReserved ); 参数: lpdwFlags[out] 指向一个变量,该变量接收连接描述内容.该参数在函数返回FLASE时仍可以返回一个有效的标记.该参数可以为下列值的一个或多个. 值 含义 INTERNET_CONNECTION_CONFIGURED0x40

  • C# ping网络IP 实现网络状态检测的方法

    C# ping网络IP 实现网络状态检测的方法 public string GetHostNameByIp(string ip)  {  ip = ip.Trim();  if (ip == string.Empty)  return string.Empty;  try  {  // 是否 Ping 的通  if (this.Ping(ip))  {  System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(ip);  return 

  • 基于JQuery的数字改变的动画效果--可用来做计数器

    因为要求是动态的,我就想到了应该是位置的变化,想到之前用过的JQuery,把里边的效果全试了试,最后选用了animate自定义,代码如下: 复制代码 代码如下: <html> <head> <title>testAnimate</title> <script type="text/javascript"> function changeNum(n) { //n设为想要改成的数字 $(function () { $("

  • C#利用性能计数器监控网络状态

    本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器组件.NextValue() 即获取计数器样本并为其返回计算所得值.PerformanceCounterCategory 表示性能对象,它定义性能计数器的类别.通过这两个即可得到计数器的信息. Chart 图表,VS自带的Chart图表,大大简化了对图表的开发.关于Chart,此前已有例子说明. Q

  • PHP计数器的实现代码

    复制代码 代码如下: <?php/*使用文本文件记录数据的简单实现*/$counter=1;if(file_exists("mycounter.txt")){$fp=fopen("mycounter.txt","r");$counter=fgets($fp,9);$counter++;fclose($fp);}$fp=fopen("mycounter.txt","w");fputs($fp,$coun

随机推荐