pingreply的简单介绍
在ping命令中 出现Reply from 138.228.181.243: Destination host unreachable是什么意思
"Destination Net Unreachable"这个信息表示对方主机不存在或者没有跟对方建立连接。
主要在以下三种情形出现:
1、 局域网使用DHCP动态分配IP地址时,DHCP出现故障或者失败
DHCP失效或者出现故障时,客户机无法分配到IP地址,系统只有自设IP地址,而IP地址的自动设置往往会分配到不同的子网,因此会出现“Destination Host Unreachable”。
2、 子网掩码设置错误
这种情况一般比较少见,如果子网掩码不是系统自动生成的,则在计算时一定细心。
3、 路由表返回错误信息
这种情况一般是在“Destination Host Unreachable”前面加上IP地址,说明本地计算机与外部网络连接没有问题,但与某台主机连接存在问题。
这里要说明一下"destination host unreachable"和"time out"的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现"time out",如果路由表中连到达目标的路由都没有,那就会出现"destination host unreachable"。
把icmp安全策略关闭
tcp/IP属性——高级——选项——IP安全机制属性——选择"不使用IPSEC"确定,OK了,一切正常
ping或者pingreply
1.获得本机IP:
string IPAddress = Dns.GetHostEntry("").AddressList[0];
2.模仿CMD的Ping
public void Ping(string[] args)
{
Ping pingsender = new Ping();
PingOptions options = new PingOptions();
PingReply reply;
string format = "Reply from {0}: bytes = 32 time={1} TTL = {2}";
options.DontFragment = true;
string data = "abcdefghijklmnopqrstuvwxyzabcdef";
byte[] buffer = Encoding.ASCII.GetBytes (data);
int timeout = 120;
Console.WriteLine("Pinging {0} with 32 bytes of data:\n", args[0]);
for( int i = 0; i 4; i++ ){
reply = pingSender.Send (args[0], timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine(string.Format(format, reply.Address, reply.RoundtripTime, reply.Options.Ttl);
}
}
}
==============================
解释一下:
1.更稳妥的写法是:
IPHostEntry host;
host = Dns.GetHostEntry("");
Console.WriteLine("GetHostEntry({0}) returns:", hostname);
foreach (IPAddress ip in host.AddressList)
{
Console.WriteLine(" {0}", ip);
}
这样,如果机器有多个IP,也可以全拿到。(来源MSDN)
2.上面的获取IP的方法,如果计算机在内网,有可能拿到类似192.168.1.100之类的内网IP。
3.在if (reply.Status == IPStatus.Success)一句,也可以switch(reply.Status)的值,从而模仿CMD下Ping命令的
“Request Time Out”
“Hardware Error”
错误提示
总之,用Ping类可以完全模拟CMD下的Ping命令输出。
我的ping一直显示Reply from101.226.179.119:bytes=32 time=28MS TTL=120,这是什么意思?
就是说你发送32字节,成功访问101.226.179.119这个地址,时间是28ms,就这个意思,表示可以访问,解析成功了