我正在编写一个C#Ping 应用程序。我一开始使用synchronousPing 方法,但我发现一键 ping 多个服务器需要越来越多的时间。所以我决定尝试一下这个asynchronous方法。
有人可以帮我吗?
public async Task<string> CustomPing(string ip, int amountOfPackets, int sizeOfPackets)
{
// timeout
int Timeout = 2000;
// PaketSize logic
string packet = "";
for (int j = 0; j < sizeOfPackets; j++)
{
packet += "b";
};
byte[] buffer = Encoding.ASCII.GetBytes(packet);
// time-var
long ms = 0;
// Main Method
using (Ping ping = new Ping())
for (int i = 0; i < amountOfPackets; i++)
{
PingReply reply = await ping.SendPingAsync(ip, Timeout, buffer);
ms += reply.RoundtripTime;
};
return (ms / amountOfPackets + " ms");
};
我定义了一个“服务器”类(IP 或主机、城市、国家/地区)。
然后我创建一个“服务器”列表:
List<Server> ServerList = new List<Server>()
{
new Server("www.google.de", "Some City,", "Some Country")
};
然后我循环遍历这个列表,并尝试调用如下方法:
foreach (var server in ServerList)
ListBox.Items.Add("The average response time of your custom server is: " + server.CustomPing(server.IP, amountOfPackets, sizeOfPackets));
不幸的是,这比方法更具竞争力synchronous,并且在我的方法应该返回值的地方,它返回
System.Threading.Tasks.Taks`1[System.string]
吃鸡游戏
慕哥9229398
相关分类