Hier ist also eine Anwendung, die jeden Server des beliebten Spiels RuneScape testet. Ich lasse den Ping auf jedem der 139 Server laufen und füge den Lag-Wert zum Array hinzu. Beim Durchlaufen der Listeneinträge kann ich den durchschnittlichen, minimalen und maximalen Lag für jeden Server berechnen.
Nun, in meinem Code, wenn einer der unerreichbaren Server vermerkt ist die niedrigste Verzögerung zeigt als 0. Ich bin nicht sicher, wie zu behandeln, wenn meine Ping-Antwort erreicht hat, es ist Timeout und Beiträge 0 zu Array-Liste.
Was kann ich tun, um zu vermeiden, dass 0 mein niedrigster Ping ist, wenn der Server nicht erreichbar ist?
using System;
using System.Net.NetworkInformation;
using System.Collections.Generic;
namespace RuneScape_Ping_Tool
{
class Program
{
static void Main(string[] args)
{
Console.Write(Environment.NewLine + "Start the test? (y/n): ");
if (Console.Read() == char.Parse("y"))
{
Console.WriteLine();
Ping();
}
}
static void Ping()
{
List<int> lag = new List<int>();
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()));
}
for (int i = 1; i <= 139; i++)
{
Console.WriteLine("World " + i + ": " + lag[i - 1]);
}
int average = 0;
int highest = 1;
int lowest = 1000;
int highestWorld = 0;
int lowestWorld = 0;
for (int i = 1; i <= 139; i++)
{
average = average + lag[i - 1];
}
for (int i = 1; i <= 139; i++)
{
if (highest < lag[i - 1])
{
highest = lag[i - 1];
highestWorld = i;
}
}
for (int i = 1; i <= 139; i++)
{
if (lowest > lag[i - 1])
{
lowest = lag[i - 1];
lowestWorld = i;
}
}
Console.WriteLine();
Console.WriteLine("Average lag: " + average / 139);
Console.WriteLine("Highest lag: " + highest + " in world " + highestWorld);
Console.WriteLine("Lowest lag: " + lowest + " in world " + lowestWorld);
Console.Write(Environment.NewLine + "Start the test? (y/n): ");
if (Console.Read() == char.Parse("y"))
{
Console.WriteLine();
Ping();
}
}
}
}