C#中的ping类

使用Ping类简化网络连接判断
本文介绍了一种使用C#中的Ping类来判断客户端是否正常连接到网络的方法,相较于TCP连接判断,此方法更为简单且更适用于通过小区、学校网关代理上网的场景。

自已上次在做一个小软件时遇到一个问题,就是怎么样判断客户端是否正常的连接到网络,在网上大部份都是说通过是否能通过建立TCP连接来判断,但是这样有一个问题,在第一次判断时,程序能正常的判断,但是网络断了过后,就不能判断了,显示网络正常,其实已经断开了,特别是像通过小区,学校网关代理上网的用户来说,更是麻烦,用TCP判断客户是否连接Ineterne的常用代码是:

TcpClient tcp = new TcpClient(); try ...{ tcp.Client.Connect("www.baidu.com", 80);//尝试连接外网的一个地址; } catch ...{ //catch块 } finally ...{ if(tcp.Connected) ...{ //代码 } }

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

}

非常简单

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/hwj383/archive/2007/12/21/1957226.aspx

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值