これは、人気のRuneScapeゲームの各サーバーをテストするアプリケーションです。私は139台のサーバーのそれぞれでpingを実行しており、配列に遅延値を追加しています。リストエントリをループしている間に、各サーバの平均、最小、最大のラグを計算できます。最小/最大/平均ping応答の計算
私のコードでは到達不能なサーバーの1つが記録されている場合、最低遅延は0と表示されます。私のping応答がタイムアウトに達していて、配列リストに0を投稿した場合の対処方法がわかりません。
サーバーがダウンしているときに私の最低のpingとして0を避けるにはどうすればよいですか?
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();
}
}
}
}
本当に返された 'PingResult.Status'の値を確認したいのですが? 0をチェックすることはハックのようです。 – yamen
私は3の代わりに1つのループを使うべきです。ありがとう。 – HelpNeeder
@yamen:いいですね。私は論理を説明したかったが、私はC#を話さない。助けてくれてありがとう! –