在C#中可以使用多种方法来判断网络的连接状态,比如使用WIN32的API来判断,也可以直接Ping某个网址来判断。
下面来介绍下我最进行写的一个判断网络连接的方法类,使用了Wine32的API函数与Ping.Send结合的方法,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Net.NetworkInformation;
namespace TestNetConnectWin32
{
public class GetInternetConStatus
{
private const int INTERNET_CONNECTION_MODEM = 1;
private const int INTERNET_CONNECTION_LAN = 2;
[DllImport("winInet.dll")]
private static extern bool InternetGetConnectedState(
ref int dwFlag,
int dwReserved
);
/// <summary>
/// 判断网络的连接状态
/// </summary>
/// <returns>
/// 网络状态(1-->未联网;2-->采用调治解调器上网;3-->采用网卡上网)
///</returns>
public static int GetNetConStatus(string strNetAddress)
{
int iNetStatus = 0;
System.Int32 dwFlag = new int();
if (!InternetGetConnectedState(ref dwFlag, 0))
{
//没有能连上互联网
iNetStatus = 1;
}
else if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0)
{
//采用调治解调器上网,需要进一步判断能否登录具体网站
if (PingNetAddress(strNetAddress))
{
//可以ping通给定的网址,网络OK
iNetStatus = 2;
}
else
{
//不可以ping通给定的网址,网络不OK
iNetStatus = 4;
}
}
else if ((dwFlag & INTERNET_CONNECTION_LAN) != 0)
{
//采用网卡上网,需要进一步判断能否登录具体网站
if (PingNetAddress(strNetAddress))
{
//可以ping通给定的网址,网络OK
iNetStatus = 3;
}
else
{
//不可以ping通给定的网址,网络不OK
iNetStatus = 5;
}
}
return iNetStatus;
}
/// <summary>
/// ping 具体的网址看能否ping通
/// </summary>
/// <param name="strNetAdd"></param>
/// <returns></returns>
private static bool PingNetAddress(string strNetAdd)
{
bool Flage = false;
Ping ping = new Ping();
try
{
PingReply pr = ping.Send(strNetAdd, 3000);
if (pr.Status == IPStatus.TimedOut)
{
Flage = false;
}
if (pr.Status == IPStatus.Success)
{
Flage = true;
}
else
{
Flage = false;
}
}
catch
{
Flage = false;
}
return Flage;
}
}
}
//判断方法
private void btnJudge_Click(object sender, EventArgs e)
{
int iNetStatus = GetInternetConStatus.GetNetConStatus("baidu.com");
if (iNetStatus == 1)
{
lblNetStatus.Text = "网络未连接";
}
else if(iNetStatus==2)
{
lblNetStatus.Text = "采用调治解调器上网";
}
else if (iNetStatus == 3)
{
lblNetStatus.Text = "采用网卡上网";
}
else if (iNetStatus == 4)
{
lblNetStatus.Text = "采用调治解调器上网,但是联不通指定网络";
}
else if (iNetStatus == 5)
{
lblNetStatus.Text = "采用网卡上网,但是联不通指定网络";
}
}
分享到:
相关推荐
判断网络连接状态例子,主要有判断本地和网络是否连接,网线是否掉线等等
c# 判断网络是否连接,判断是否有连接,并获取连接类型,网卡连接,猫连接等
C#中一般通过InternetGetConnectedState函数返回本地系统的网络连接状态,下面简单介绍下,需要的朋友可以参考下
C#获取当前本机已连接无线网络名称和信号强度;可以枚举所以无线网络的名称和信号强度
用C#编写,快速准确判断网络连接状态的代码。
使用win32 API函数判断网络连接状态,并用ping.send确认网络连接的小程序
实时检测网络的通断情况,以实现网络的无缝重连
通过C#调用DOS的NETUSE和当前网络盘的路径,判断当前网络映射盘是否可用,是断开状态还是连接状态。
本文实例讲述了C#使用Socket快速判断数据库连接是否正常的方法。分享给大家供大家参考。具体分析如下: 大家在做项目的时候,一般都是和数据库有关的。而相信许多人在用代码打开数据库的时候,没有判断数据库连接...
有时我们要不停的判断网络的连接状态,比如服务器网络连接是否正常等,下面就简单介绍我的判断方法
C#利用ManagedWifi获取当前已经连接的WIFI的名称(SSID)。全部C#源代码,vs2008工程,可编译和测试。
C#判断联网:最简单写的。判断联网代码。。。。。。。。。
主要介绍了使用c#判断网络连接状态的示例,需要的朋友可以参考下
本文实例讲述了C#判断本地文件是否处于打开状态的方法。分享给大家供大家参考。具体分析如下: 对于应用程序,有时候可能需要判断某个文件是否已经被打开,也就是指是否被某个流连接着。这在对文件的读写比较频繁的...
该资源用于测试串口通信是否正常,能够显示传输和接收的数据数目,测试方法可以将TX、RX短接,因为程序中传输的数据是0x5A,如果接收的数据不是0x5A就会弹出出错messagebox。
Csharp入门经典(第四版) 绝对高清版本,方便阅读。
//判断连接对象状态,如果是关闭,将其打开 if (con.State == System.Data.ConnectionState.Closed) con.Open(); } catch (System.Data.SqlClient.SqlException E) { //如果出现错误,关闭数据连接,并抛出...