在我的winforms应用程序中,我需要检查系统是否已连接到互联网。 目前我正在使用
try
{
Dns.GetHostEntry("www.something.com");
return true;
}
catch (Exception)
{
return false;
}
但这并不适合我。如果系统未连接到互联网,则启动应用程序需要两分钟以上(因为超时)。 想知道是否可以使用WMI命令吗?
答案 0 :(得分:2)
我使用此类检查Internet连接 如果用户使用Dsl调制解调器连接,则代码无法识别Internet连接
NetworkInterface.GetIsNetworkAvailable()
但是这个类可以解决这个问题,
class InternetConnectionChecker
{
private bool _connectingFlag = false;
private Thread _th;
#region Ping Google To Test Connect Or Disconnect
private string Ping()
{
try
{
const string remoteMachineNameOrIP = "173.194.78.104";
var ping = new Ping();
var reply = ping.Send(remoteMachineNameOrIP, 5);
var sb = new StringBuilder();
sb.Append(reply.Status.ToString());
return sb.ToString();
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion
#region Connecting Cheker Thread
private void ConCheck()
{
var status = Ping();
_connectingFlag = status == "Success" || status == "TimedOut";
}
public bool ConnectingCheker()
{
_th = new Thread(ConCheck);
_th.Start();
return _connectingFlag;
}
#endregion
}
For Use //不要忘记创建全局实例InternetConnectionChecker
InternetConnectionChecker _connectionChecker = new InternetConnectionChecker();
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
btn1.Content = _connectionChecker.ConnectingCheker();
}
答案 1 :(得分:0)
我不了解WMI,但有一些.NET Framework类可以帮助System.Net.NetworkInformation
命名空间。特别是,NetworkInterface.GetIsNetworkAvailable()
可以告诉您网络连接(不一定是因特网)是否可用。在同一名称空间中,Ping
类有几种方法用于发送异步和/或具有超时参数的ping请求。
答案 2 :(得分:0)