-->

C# 使用ping来判断网络是否连通,但是拔掉网线就PingException

2020-09-27 09:15发布

问题:

我在循环用ping测试设备间是否正常连接,头几次正常连接,但是我拔了网线就直接异常PingException

代码

IPAddress ip = IPAddress.Parse(192.168.1.152);
Ping ping = new Ping();
PingReply reply = ping.Send(ip);

return (reply.Status == IPStatus.Success);
```

###问题
这个异常发生原因是啥?怎么处理?或者说怎么避免

回答1:

我猜这个异常发生的原因是你拔掉了网线。抛出这个异常就说明网不通阿:

bool CanConnect(ipstr)
{
 IPAddress ip = IPAddress.Parse(ipstr);
 Ping ping = new Ping();
 try
 {
     PingReply reply = ping.Send(ip);
     return return (reply.Status == IPStatus.Success);
 }
 catch(PingException)
 {
     return false;
 }
}


回答2:

如果不想使用捕获异常的方式,可以试试 System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() ,详见 How do I check for a network connection?