C#Pinger无法正常工作

时间:2013-11-24 17:44:32

标签: c# ping

我的代码成功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;
}

假设地址为http://www.example.com/

我会ping那个,它会说它处于离线状态。

如果我要将该地址更改为example.com

它会说是在线。

但是,如果我要ping一个不存在的地址,例如:idfnwjfneriugelhfnaiorfge.com

当它不是时,它会说是在线的。

有人知道为什么这样做吗?

1 个答案:

答案 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在线。