我的代码成功ping了,但现在正在运行。
public static bool IsHostnameAlive(string address)
{
bool Alive = false;
try
{
Ping ping = new Ping();
PingReply reply = ping.Send(address);
Alive = (reply.Status == IPStatus.Success);
MessageBox.Show(address + " is online.");
}
catch
{
Alive = false;
MessageBox.Show(address + " is offline or does not allow ICMP traffic.");
}
return Alive;
}
我会ping那个,它会说它处于离线状态。
如果我要将该地址更改为example.com
它会说是在线。
但是,如果我要ping一个不存在的地址,例如:idfnwjfneriugelhfnaiorfge.com
当它不是时,它会说是在线的。
有人知道为什么这样做吗?
答案 0 :(得分:3)
即使ping失败,你也说它在线:
MessageBox.Show(address + " is online.");
我猜你想把它改成:
if (Alive) {
MessageBox.Show(address + " is online.");
else {
MessageBox.Show(address + " is offline or does not allow ICMP traffic.");
}
当您尝试ping无效地址(不是IP或有效DNS名称)时,catch
会处理它。但是,如果您尝试ping无响应的有效IP或DNS名称(例如192.168.200.237),则将Alive
设置为false
,但之后会显示一个消息框,指出 192.168 .200.237在线。。