In C #, you can use multiple methods to determine the network connection status. For example, you can use Win32 APIs to determine the connection status, or you can directly ping a website to determine the connection status.
The following describes a method class that I write most to determine the network connection. It uses the combination of wine32 API functions and Ping. Send. The Code is as follows:
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>
/// Determine the network connection status
/// </Summary>
/// <Returns>
/// Network status (1 --> not connected to the Internet; 2 --> enable the modem to access the Internet; 3 --> enable the NIC to access the Internet)
/// </Returns>
Public static int getnetconstatus (string strnetaddress)
{
Int inetstatus = 0;
System. int32 dwflag = new int ();
If (! Internetgetconnectedstate (ref dwflag, 0 ))
{
// Unable to connect to the Internet
Inetstatus = 1;
}
Else if (dwflag & internet_connection_modem )! = 0)
{
// Enable the Remote Desktop to access the Internet using the Remote Desktop modem. You need to determine whether you can log on to a specific website.
If (pingnetaddress (strnetaddress ))
{
// You can ping the specified URL. The network is OK.
Inetstatus = 2;
}
Else
{
// The specified URL cannot be pinged. The network is not OK.
Inetstatus = 4;
}
}
Else if (dwflag & internet_connection_lan )! = 0)
{
// If you use an Eni to access the Internet, you need to determine whether you can log on to a specific website.
If (pingnetaddress (strnetaddress ))
{
// You can ping the specified URL. The network is OK.
Inetstatus = 3;
}
Else
{
// The specified URL cannot be pinged. The network is not OK.
Inetstatus = 5;
}
}
Return inetstatus;
}
/// <Summary>
/// Ping the specific website to check whether the Ping is successful.
/// </Summary>
/// <Param name = "strnetadd"> </param>
/// <Returns> </returns>
Private Static bool pingnetaddress (string strnetadd)
{
Bool flage = false;
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;
}
}
}
// Judgment Method
Private void btnjudge_click (Object sender, eventargs E)
{
Int inetstatus = getinternetconstatus. getnetconstatus ("Baidu.com ");
If (inetstatus = 1)
{
Lblnetstatus. Text = "the network is not connected ";
}
Else if (inetstatus = 2)
{
Lblnetstatus. Text = "using a modem to access the Internet ";
}
Else if (inetstatus = 3)
{
Lblnetstatus. Text = "using network adapter ";
}
Else if (inetstatus = 4)
{
Lblnetstatus. Text = "Use the modem to access the Internet, but cannot connect to the specified network ";
}
Else if (inetstatus = 5)
{
Lblnetstatus. Text = "using the NIC to access the Internet, but cannot connect to the specified network ";
}
}