zl程序教程

您现在的位置是:首页 >  后端

当前栏目

c#判断网络连接状态

c#状态 判断 网络连接
2023-06-13 09:15:16 时间

运行效果

复制代码代码如下:


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