我有一个包含未知数量项目的IP列表(可能是1578,500,1253 ....)
我想创建一个循环,每次只需10个项目并检查ping它们(因此服务器不会卡住)。
ping之后,如果IP在线,我将在其上运行更多功能。
那么,我该怎么办??
//a list of IP that will be online
List<string> Online = new List<string> ();
//temp list to get 10 IP everytime
List<string> Top10 = new List<string>();
//this a list from sql
List<string> ListIPs = new List<string>();
//want to run the command for only 3 in each time
for (int i = 0; i < ListIPs.Count - 8; i++)
{
Top3 = ListIPs.GetRange(i, 9);
System.Threading.Tasks.Parallel.ForEach(Top10, site =>
{
Ping p = new Ping();
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 200;
PingReply reply = p.Send(site, timeout, buffer);
if (reply.Status == IPStatus.Success)
{
Online.Add(site + "," + reply.Status.ToString() + " , " + reply.RoundtripTime.ToString());
}
});///end of Threading
// Console.WriteLine("Finish time " + i);
i = i + 9;
// foreach (var v in Top10)
// {
// Console.WriteLine(v);
// }
Top10.Clear();
} //end of cutting the list to 10 each time
这适用于1548的列表 - 我删除了最后8个以查看它的工作情况,但我该如何自动执行?
并且不知道物品的数量?
也许是这样的:
list.count/10
然后取小数部分?
例如:
32/10
int部分为3
,小数部分为2
然后改变for条件?
或取2并添加10 - 2 = 8
零?