如何确定ping回复是否已超时?

时间:2012-05-09 19:01:09

标签: c# timeout console-application ping roundtrip

我需要确定是否发生超时并将条目保存到列表数组中。

这是我ping并将往返值添加到一个列表数组的方法:

static void Ping()
{
    Console.Write(Environment.NewLine + "Start the test? (y/n): ");

    if (Console.ReadLine().ToLower() == "y")
    {
        List<int> lag = new List<int>();

        Console.WriteLine();

        for (int server = 1; server <= 139; server++)
        {
            string url = "world" + server.ToString() + ".runescape.com";

            Console.WriteLine("Checking world " + server + "...");

            Ping ping = new Ping();
            PingReply reply = ping.Send(url);

            lag.Add(int.Parse(reply.RoundtripTime.ToString()));
        }

    // ... More Code Here ...

    }
}

怎么做?

2 个答案:

答案 0 :(得分:2)

请参阅状态属性

reply.Status

它返回一个应具有相应状态的IPStatus。

答案 1 :(得分:0)

您似乎需要使用PingReply.Status中的值来确定是否发生超时。 MSDN文档声明:

  

如果Status的值不是Success,则不应使用这些值   由RoundtripTime,Options或Buffer属性返回。该   RoundtripTime和Buffer属性将返回零和Options   属性将返回null。

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.pingreply.status.aspx