关注联楷|返回首页 | 网站案例 | 帮助中心

合作共赢、快速高效、优质的网站建设提供商

上海网站建设 

服务热线:021-61394118

上海联楷科技

C#判断网址能否打开

作者:佚名   时间:2012-05-03   分享到:

第一种办法,最简单的,但是不准确,呵呵

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("linksj.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("你网线掉了啦");



如没特殊注明,文章均为上海联楷网络原创,转载请注明来自:http://www.linksj.com/contact/20151229/n7591.html

上海联楷网络新闻