C#中判斷網路連接的狀態

來源:互聯網
上載者:User

有時我們要不停的判斷網路的串連狀態,比如伺服器網路連接是否正常等,下面就簡單介紹我的判斷方法,各位有更好的方法歡迎分享。

代碼就不解釋了,一看就明白了。

運行效果:

代碼:

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.