C#中的ping类

自已上次在做一个小软件时遇到一个问题,就是怎么样判断客户端是否正常的连接到网络,在网上大部份都是说通过是否能通过建立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

}

非常简单

你可能感兴趣的:(c#,网络,tcp,string,dll,byte)