我需要一个事件来检测Internet连接/断开连接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要一个事件来检测Internet连接/断开连接相关的知识,希望对你有一定的参考价值。
我们正在开发一个.NET应用程序,其中一个要求是监视系统是否连接到Internet。
我们能够获得“以太网电缆断开”的.NET事件,但如果调制解调器被重置,则此事件不会被触发。我不想继续ping一些URL来完成这项工作,因为它会增加相当大的性能开销。是否有任何.NET事件可以检查系统是否连接到互联网?
系统托盘中有一个图标,当系统未连接到互联网时,该图标显示交叉标志或有限连接标志。这表明Windows知道,我想陷阱那个事件。
在http://msdn.microsoft.com/en-us/library/ee264321(VS.85).aspx上,这些都包括在内(包括在网络上和让网络连接到互联网之间的区别)。我希望你的意思是把Windows 7标签放在你的帖子上,因为这一切都很新。
关键是INetworkListManager.get_IsConnectedToInternet()
,它几乎就像锡上所说的那样。你必须跳过一点来注册事件等.Code Pack为你包装了一些,并有一个你可以适应的网络样本。
您可以将NetworkChange类与NetworkAvailabilityChanged事件一起使用:
NetworkChange.NetworkAvailabilityChanged += myNetworkAvailabilityChangeHandler;
由于这是一个系统事件,请确保在完成后删除该事件,请在此处查看此帖:You need to be careful about using event handler for NetworkChange
我能够在一定程度上解决这个问题。我能够在Code项目http://www.codeproject.com/script/Articles/ListVersions.aspx?aid=34650中找到一些示例代码。谢谢大家的回复。
尤其是格雷戈里先生发布的文章链接给了我很多帮助。
这对我有用!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.NetworkInformation;
namespace ConsoleApplication6
{
class Program
{
private void AvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
if (e.IsAvailable)
Console.WriteLine("Network connected!");
else
Console.WriteLine("Network dis connected!");
}
public void Form1()
{
NetworkChange.NetworkAvailabilityChanged += AvailabilityChanged;
}
static void Main(string[] args)
{
Program p = new Program();
p.Form1();
Console.ReadLine();
}
}
}
试试这个:
private void AvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
if (e.IsAvailable)
Console.WriteLine("Wi-Fi conectado " + DateTime.Now );
else
Console.WriteLine("Wi-Fi desconectado " + DateTime.Now);
}
public Inicio()
{
InitializeComponent();
NetworkAvailabilityChangedEventHandler myHandler = new NetworkAvailabilityChangedEventHandler(AvailabilityChanged);
NetworkChange.NetworkAvailabilityChanged += myHandler;
}
你必须使用WMI。
这是断开连接检测的示例:(测试它创建.vbs文件并运行它)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\wmi")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * from MSNdis_StatusMediaDisconnect")
Do While True
Set strLatestEvent = colMonitoredEvents.NextEvent
Wscript.StdOut.Write "A network connection has been lost: "
Wscript.StdOut.Writeline strLatestEvent.InstanceName
Loop
以上是关于我需要一个事件来检测Internet连接/断开连接的主要内容,如果未能解决你的问题,请参考以下文章
Android InputStream Internet 断开连接