我正在写一个应用程序来检查计算机是否连接到一个特定的网络,并为我们的用户做一些魔术。如何查看网络连接是否改变状态?
该应用程序将在后台运行并执行检查,如果用户请求它(托盘中的菜单)。我还希望应用程序能够自动检查并执行魔术,如果用户从有线更改为无线,或断开连接并连接到新网络。
当网络接口改变状态时,是否可以触发它?
我正在写一个应用程序来检查计算机是否连接到一个特定的网络,并为我们的用户做一些魔术。如何查看网络连接是否改变状态?
该应用程序将在后台运行并执行检查,如果用户请求它(托盘中的菜单)。我还希望应用程序能够自动检查并执行魔术,如果用户从有线更改为无线,或断开连接并连接到新网络。
当网络接口改变状态时,是否可以触发它?
这样做是要定期检查一些可靠的外部资源的可用性的唯一可靠的方法。你可以,例如,ping您的服务器,要求的一些信息等
我只是想查看我们的Web代理服务器是否响应,因为代理配置将会改变。 我的应用程序现在正在每隔几分钟检查一次,但如果用户连接到另一个网络,我很乐意立即做到这一点。 :) – tkalve
那么鲁本斯的方法就是你所需要的。但请记住,您的用户可能会同时连接到您的代理服务器和某个外部网络*。然后,如果他们与您的代理断开连接,则NetworkAvailabilityChanged不会被提出,只要它们仍连接到另一个网络。 –
您应该使用System.Net.NetworkInformation
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler((sender, e, ...otherParametersIfYouWant) => AvailabilityChangedCallback(sender, e, ...));
private void AvailabilityChangedCallback(object sender, NetworkAvailabilityEventArgs e)
{
if (e.IsAvailable)
{
//Internet Connection is available
}
}
对于其他信息查询this
NetworkChange.NetworkAvailabilityChanged + =新的NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged); NetworkChange.NetworkAddressChanged + = new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged); – EricLaw
不幸的是,例如,该名称空间中的任何内容都无法告诉您WiFi信号何时降至零电平。也就是说,当NetworkAvailabilityChanged事件发生并将其IsAvaiable属性设置为false时,您肯定知道您已断开连接。但是您可能会断开连接(例如,有人会切断您的电缆),并且不会发生任何事件。这就是TCP/IP的工作方式。 –