C#与网络相关的两个监听的事件
今天遇到一个问题,当网络连接有问题的时候设计软件向用户发送通知,查了资料发现了两个相关的事件分享一下。
一、System.Net.NetworkInformation命名空间下的NetworkChange类中定义的NetworkAddressChanged事件:
此事件的官方摘要是:在网络接口的 IP 地址更改时发生。
在网络发生变化是会触发,并且不知道为什么在断网或者连网时分别会触发两次,如果知道原因的大神请留言告知,实例代码:
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(AddressChangedCallback);
private void AddressChangedCallback(object sender, EventArgs e)
{
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface n in adapters)//查看网络适配器的状态
{
MessageBox.Show(n.Name + " is " + n.OperationalStatus);
}
if (CheckNetworkStatus() == false)
{
MessageBox.Show("与服务器网络断开");
}
}
private bool CheckNetworkStatus()//检测网络是否断开
{
bool networkFlag = false;
try
{
Ping p = new Ping();
PingOptions pOption = new PingOptions();
pOption.DontFragment = true;
string data = "Test Data!";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 500; // Timeout
string ip = "www.baidu.com";
System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, pOption);
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
{
networkFlag = true;
}
}
catch (Exception ex)
{
//ex.Message=Ping 请求期间发生异常
networkFlag = false;
}
return networkFlag;
}
二、System.Net.NetworkInformation命名空间下的NetworkChange类中定义的NetworkAvailabilityChanged事件:
此事件的官方摘要是:在网络的可用性更改时发生。
在网络可用性发生变化是会触发,在我的客户端中使用了这个事件监听网络可用性的变化,实例代码:
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(AvailabilityChangedCallback);
public delegate void MyMethodP(object obj);//定义一个委托用于线程间的消息传递
private void AvailabilityChangedCallback(object sender, EventArgs e)
{
MyMethodP mm = new MyMethodP(MessageBoxShow);
if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())//检测当前网络是否可用
{//断网处理
this.Invoke(mm, "系统检测当前网络断开,请重新登录!");
Application.Exit();
}
else
{
this.Invoke(mm, "检测到您当前网络不稳定,连接已断开,请重新登录!");
Application.Exit();
}
}
private void MessageBoxShow(object obj)//消息传递方法
{
MessageBox.Show(this, obj.ToString());
}
C#与网络相关的两个监听的事件的更多相关文章
- 两种js监听滚轮事件的方式
前段时间在写前端的时候,需要监听浏览器的滚轮事件 网上查了一下,找到两种监听滚轮事件的方法: 一.原生js通过window.onscroll监听 //window.onscroll = functio ...
- Oracle启动两个监听
接上篇:Oracle服务器修改IP后 Oracle服务器更换IP后,办公网络里面可以正常访问了,外地的同事,连了vpn 也可以访问,以为可以收工回家,突然又有同事过来说,机房的服务器ping不通新的i ...
- 【ERROR】Oracle11g两个监听同名进程的故障
问题: 一个实例启动了另个两个监听. 解决方法: #ps -ef | grep tnslsnr #oracle 925826 1 0 Apr 06 - 234:50 /u01/app/oracle/p ...
- JS 中的事件绑定、事件监听、事件委托
事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有 ...
- javascript事件监听与事件委托
事件监听与事件委托 在js中,常用到element.addEventListener()来进行事件的监听.但是当页面中存在大量需要绑定事件的元素时,这种方式可能会带来性能影响.此时,我们可以用事件 ...
- 在Javascript中监听flash事件(转)
在Javascript中监听flash事件,其实有两种做法: 1.在特定的环境下(例如专门制作的flash),大家约定一个全局函数,然后在flash的事件中用ExternalInterface.cal ...
- Vue 爬坑之路(七)—— 监听滚动事件 实现动态锚点
前几天做项目的时候,需要实现一个动态锚点的效果 如果是传统项目,这个效果就非常简单.但是放到 Vue 中,就有两大难题: 1. 在没有 jQuery 的 animate() 方法的情况下,如何实现平滑 ...
- H5_0003:JS禁用调试,禁用右键,监听F12事件的方法
1,禁用调试 // 这个方法是防止恶意调试的 (function () { console["log"]("=============================== ...
- JS 事件绑定、事件监听、事件委托详细介绍
原:http://www.jb51.net/article/93752.htm 在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代 ...
随机推荐
- P4408 逃学的小孩 题解
题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?"一听说要考试,Chris的父母就心 ...
- 【转】Web端测试点整理
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_24373725/article/d ...
- Java入门系列之final
前言 在C#经典面试中掺杂过Java的final关键字,主要用于类不能被继承,在C#则是利用关键字seal修饰类为密封类,而在Java中的final关键字的具体用法包含C#中const.readonl ...
- redis(五):Redis 键(key)(python)
# -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host="123.516.174 ...
- redis(一):Redis 数据类型
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
- Spring AOP里的静态代理和动态代理,你真的了解嘛?
什么是代理? 为某一个对象创建一个代理对象,程序不直接用原本的对象,而是由创建的代理对象来控制原对象,通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为 ...
- 如何手写一个简单的LinkedList
这是我写的第三个集合类了,也是简单的实现了一下基本功能,这次带来的是LinkedList的写法,需要注意的内容有以下几点: 1.LinkedList是由链表构成的,链表的核心即使data,前驱,后继 ...
- T2 监考老师 题解
第二题,他并不是多难的算法.甚至连搜索都不用,他的题目要求和数据断定了他第二题的地位. 在一个大试场里,有 n 行 m 列的考生,小王和众多同学正在考试,这时,有一部分考生 作弊,当然,监考老师能发现 ...
- scratch编程体感游戏
体感游戏有很多种,最常见的就是摄像头和声控了,今天我们要用scratch编写一系列的体感游戏!!!是不是很激动呢? 首先我们来编摄像头类的: No.1拳头打幽灵 挥动头就能打到幽灵了哟! 具体程序如下 ...
- Java Object类中的equals方法
Object类中的equals方法用于检测一个对象是否等于另外一个对象.在Object类中,这个方法将判断两个对象是否具有相同的引用.如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为 ...