c#判斷網(wǎng)絡(luò)連接狀態(tài)
運(yùn)行效果
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>
/// 檢測(cè)網(wǎng)絡(luò)連接狀態(tài)
/// </summary>
/// <param name="urls"></param>
public static void CheckServeStatus(string[] urls)
{
int errCount = 0;//ping時(shí)連接失敗個(gè)數(shù)
if (!LocalConnectionStatus())
{
Console.WriteLine("網(wǎng)絡(luò)異常~無(wú)連接");
}
else if (!MyPing(urls, out errCount))
{
if ((double)errCount / urls.Length >= 0.3)
{
Console.WriteLine("網(wǎng)絡(luò)異常~連接多次無(wú)響應(yīng)");
}
else
{
Console.WriteLine("網(wǎng)絡(luò)不穩(wěn)定");
}
}
else
{
Console.WriteLine("網(wǎng)絡(luò)正常");
}
}
#region 網(wǎng)絡(luò)檢測(cè)
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>
/// 判斷本地的連接狀態(tài)
/// </summary>
/// <returns></returns>
private static bool LocalConnectionStatus()
{
System.Int32 dwFlag = new Int32();
if (!InternetGetConnectedState(ref dwFlag, 0))
{
Console.WriteLine("LocalConnectionStatus--未連網(wǎng)!");
return false;
}
else
{
if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0)
{
Console.WriteLine("LocalConnectionStatus--采用調(diào)制解調(diào)器上網(wǎng)。");
return true;
}
else if ((dwFlag & INTERNET_CONNECTION_LAN) != 0)
{
Console.WriteLine("LocalConnectionStatus--采用網(wǎng)卡上網(wǎng)。");
return true;
}
}
return false;
}
/// <summary>
/// Ping命令檢測(cè)網(wǎng)絡(luò)是否暢通
/// </summary>
/// <param name="urls">URL數(shù)據(jù)</param>
/// <param name="errorCount">ping時(shí)連接失敗個(gè)數(shù)</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# ping網(wǎng)絡(luò)IP 實(shí)現(xiàn)網(wǎng)絡(luò)狀態(tài)檢測(cè)的方法
- c#判斷網(wǎng)絡(luò)連接狀態(tài)的示例分享
- C#中判斷本地系統(tǒng)的網(wǎng)絡(luò)連接狀態(tài)的方法
- js計(jì)數(shù)器代碼
- 一個(gè)簡(jiǎn)單的網(wǎng)站訪問(wèn)JS計(jì)數(shù)器 刷新1次加1次訪問(wèn)
- Redis的使用模式之計(jì)數(shù)器模式實(shí)例
- PHP計(jì)數(shù)器的實(shí)現(xiàn)代碼
- 基于JQuery的數(shù)字改變的動(dòng)畫效果--可用來(lái)做計(jì)數(shù)器
- php計(jì)數(shù)器的設(shè)計(jì)與實(shí)現(xiàn)
- C#利用性能計(jì)數(shù)器監(jiān)控網(wǎng)絡(luò)狀態(tài)
相關(guān)文章
C#將字節(jié)數(shù)組轉(zhuǎn)換成數(shù)字的方法
這篇文章主要介紹了C#將字節(jié)數(shù)組轉(zhuǎn)換成數(shù)字的方法,涉及C#類型轉(zhuǎn)換的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
C#?守護(hù)進(jìn)程的介紹及實(shí)現(xiàn)詳解
本文主要介紹了C#?守護(hù)進(jìn)程的介紹及實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Unity3D實(shí)現(xiàn)鼠標(biāo)控制旋轉(zhuǎn)轉(zhuǎn)盤
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)鼠標(biāo)控制旋轉(zhuǎn)轉(zhuǎn)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
C#控制臺(tái)程序如何發(fā)布到服務(wù)器Linux上運(yùn)行
這篇文章主要給大家介紹了關(guān)于C#控制臺(tái)程序如何發(fā)布到服務(wù)器Linux上運(yùn)行的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-11-11

