-1

次のコードは機能しており、すべての Runescape ゲーム サーバーに ping を実行し、コンソールに IP アドレスとそれぞれの「ラウンドトリップ」時間のリストを返します。

「古いコメントの一部を無視する」を編集

以下の点で困っています。

A) すべてのサーバーから最も低い ping を返し、それをコンソールに書き込むにはどうすればよいですか?

B) メソッド全体で現在の「server.ToString()」の元のホスト名または「番号」を返すにはどうすればよいですか?

    public void buttonClick_Click(object sender, EventArgs e)
    {
            Console.WriteLine();
            Ping();     
    }


    public static void Ping()
    {
        for (int server = 1; server <= 110; server++)
        {
            string hostname = "oldschool" + server.ToString() + ".runescape.com";

            // Get an object that will block the main thread.
            AutoResetEvent waiter = new AutoResetEvent(false);

            // Ping's the local machine.
            Ping pingSender = new Ping();

            // When the PingCompleted event is raised,
            // the PingCompletedCallback method is called.
            pingSender.PingCompleted += new PingCompletedEventHandler(PingCompletedCallback);

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);

            //Console.WriteLine("Send Before Async.");

            // Send the ping asynchronously.
            // Use the waiter as the user token.
            // When the callback completes, it can wake up this thread.
            pingSender.SendAsync(hostname, 1000, waiter);

            //Console.WriteLine("Ping example completed.");
        }
    }

    private static void PingCompletedCallback(object sender, PingCompletedEventArgs e)
    {
        // If the operation was canceled, display a message to the user.
        if (e.Cancelled)
        {
            Console.WriteLine("Ping canceled.");
            // Let the main thread resume. 
            // UserToken is the AutoResetEvent object that the main thread 
            // is waiting for.
            ((AutoResetEvent)e.UserState).Set();
        }
        // If an error occurred, display the exception to the user.
        if (e.Error != null)
        {
            Console.WriteLine("Ping failed:");
            Console.WriteLine(e.Error.ToString());
            // Let the main thread resume. 
            ((AutoResetEvent)e.UserState).Set();
        }
        PingReply reply = e.Reply;
        DisplayReply(reply);

        // Let the main thread resume.
        ((AutoResetEvent)e.UserState).Set();
    }

    public static void DisplayReply(PingReply reply)
    {
        List<long> lag = new List<long>();

        if (reply == null)
        return;

        Console.WriteLine("Status: {0}", reply.Status);

        if (reply.Status == IPStatus.Success)
        {
            Console.WriteLine("\r\n");
            Console.WriteLine("Address: {0}", reply.Address);
            Console.WriteLine("Ping: {0}", reply.RoundtripTime);
        }
        return;
    }
4

1 に答える 1