C# 多线程ping并打印log
时间: 2023-11-17 14:47:05 浏览: 49
以下是一个C#多线程ping并打印log的示例代码:
```
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Threading;
namespace MultiThreadPing
{
class Program
{
static void Main(string[] args)
{
List<string> ipList = new List<string>()
{
"www.google.com",
"www.baidu.com",
"www.microsoft.com",
"www.apple.com",
"www.facebook.com"
};
Console.WriteLine($"Starting to ping {ipList.Count} IPs");
PingOptions options = new PingOptions(64, true);
int timeout = 5000;
foreach (string ip in ipList)
{
Thread t = new Thread(() =>
{
try
{
using (Ping ping = new Ping())
{
PingReply reply = ping.Send(ip, timeout, new byte[32], options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine($"Ping {ip}: Success. RTT: {reply.RoundtripTime}ms");
}
else
{
Console.WriteLine($"Ping {ip}: {reply.Status}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Ping {ip}: {ex.Message}");
}
});
t.Start();
}
Console.WriteLine("All pinging tasks are started.");
}
}
}
```
在这个示例中,我们首先定义了一个`ipList`,其中包含了需要ping的IP地址列表。然后,我们使用`PingOptions`类和`timeout`变量来配置ping命令的参数。接着,我们遍历`ipList`,为每个IP地址启动一个新线程,在线程内执行ping命令并打印结果。最后,我们在主线程中打印出所有ping任务已经启动的消息。
请注意,在实际开发中,我们需要根据具体需求来调整ping命令的参数和线程数,以达到最佳的性能和效果。