自已上次在做一个小软件时遇到一个问题,就是怎么样判断客户端是否正常的连接到网络,在网上大部份都是说通过是否能通过建立TCP连接来判断,但是这样有一个问题,在第一次判断时,程序能正常的判断,但是网络断了过后,就不能判断了,显示网络正常,其实已经断开了,特别是像通过小区,学校网关代理上网的用户来说,更是麻烦,用TCP判断客户是否连接Ineterne的常用代码是:
TcpClient tcp = new TcpClient();
try
...{
tcp.Client.Connect("www.baidu.com", 80);//尝试连接外网的一个地址;
}
catch
...{
//catch块
}
finally
...{
if(tcp.Connected)
...{
//代码
}
}
还有一种方法是通过API调用Ping程序,也非常麻烦,需要导入Dll,还要对返的结果做出分析,而且程序运行时会弹出CMD窗体,非常不友好.
其实我们可以利用C#中的Ping类来实现这一功能:
首先引入 using System.Net.NetworkInformation;命名空间
声明一个Ping对像:
Ping myPing = new Ping();
设置Ping选项
PingOptions myOptions = new PingOptions();
MyOptions.DontFragment = true;//允许数据分段,还有一个TTL选项
//创建一个32B的缓冲区
string data = "abcdefghijklmnopqrstuvwxy123456";
byte[] buff = Encoding.ASCII.GetBytes(data);
Ping回复结果:
PingReply myPingReply = myPing.Send("远程IP",超时时间,缓冲大小,Ping选项);
最后判断一下是否功功即可:
if(myPingReply.Status == IPStatus.Success)
{
//your code
}
非常简单
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hwj383/archive/2007/12/21/1957226.aspx