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.ktcbnqb.cn/contact/20151229/n7591.html