在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
今天,写一个代码比较少得例子,当然发现互联网站已经有了类似的文章了,哈哈,但是俺还是要写,变菜鸟吗?变就变得彻底。嘿嘿。今天发现一个朋友的文章里面提到的一点非常有意思。给大家展示一下 终于知道移动比联通牛的原因了!
1、在桌面上点右键,选择新建-文本文档; 知道今天我才知道,为什么联通不给力了,哈哈。好了,不废话了,开始我们的小实例吧。 如何用C#判断网络是否连接呢,这个有N多方法,我们下面尽量说的完整一些。 第一种办法,最简单的,但是不准确,呵呵 private void btnIsConnect_Click(object sender, EventArgs e) { if (SystemInformation.Network) { MessageBox.Show("已经联网,但是不确定是互联网还是局域网"); } } 这个办法在局域网下也是true
第二种办法 Ping 一个地址,我们就采用baidu要是baidu宕机了,哇塞,那就不怨谁了。哈哈 首先引用命名空间 using System.Net.NetworkInformation;
然后我们简单的实现一下,这种实现并不完美,慢慢的我们在完善他, private void btnPing_Click(object sender, EventArgs e) { Ping ping = new Ping(); PingReply pr = ping.Send("baidu.com"); if (pr.Status == IPStatus.Success) MessageBox.Show("联网状态"); else MessageBox.Show("你网线掉了啦"); } ping.Send("baidu.com"); 记住Send有8个重载方法,你可以自己去调整。 我们先得到,一个谷歌的IP做准备 然后开始吧 这里我们主要是根据Send的参数来准备我们的数据,也有人把这个称作 发心跳包 说白了就是不断的发送请求,判断是否联网。 Ping ping = new Ping(); PingOptions poptions = new PingOptions(); poptions.DontFragment = true; string data = string.Empty; byte[] buffer = Encoding.ASCII.GetBytes(data); 准备数据到位,开始Send
int timeout = 1200; PingReply reply = ping.Send(IPAddress.Parse("74.125.71.104"),timeout,buffer,poptions); if (reply.Status == IPStatus.Success) MessageBox.Show("联网状态"); else MessageBox.Show("你网线掉了啦");haha,好了,测试一下吧。 嘿嘿,这个就稳定多了。 当然还有一种办法就是 调用系统的 API了, [DllImport("wininet")] private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue); 给出上面函数的用法地址 http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx int i = 0; if (InternetGetConnectedState(out i, 0)) MessageBox.Show("联网状态"); else MessageBox.Show("你网线掉了啦"); 哈哈,搞定了。上个实例有人询问验证码的判断方法,嘿嘿,留个悬念,回头我给大家做一个实例,看看,效果。 代码下载地址 IsInternet.rar |
请发表评论