gpt4 book ai didi

c# - ping 大量 IP 地址的最快方法?

转载 作者:行者123 更新时间:2023-11-30 18:02:32 25 4
gpt4 key购买 nike

我在数据表中有一个很大的 IP 地址列表,我必须如此快速地对它们执行 ping 操作,我使用了这段代码:

public bool PingIP(string IP)
{
bool result = false;
try
{
Ping ping = new Ping();
PingReply pingReply = ping.Send(IP);
if (pingReply.Status == IPStatus.Success)
result = true;
}
catch
{
result = false;
}
return result;
}

然后我在 while 循环中调用它:

private void CheckNetworkState()
{
while (rowindexping > -1)
{
if (rowindexping == tbl_ClientInfo.Rows.Count)
{
rowindexping = -1;
return;
}

string ip = tbl_ClientInfo.Rows[rowindexping]["clientip"].ToString();
if (!PingIP(ip))
{
do something
}
rowindexping++;
Thread.Sleep(100);
}
}

因为我想在项目的后台完成这项工作,所以我在一个线程中调用类:

threadping = new Thread(CheckNetworkState);            
threadping.IsBackground = true;
threadping.Start();

我的问题是它需要很多时间并且在后台不工作。我的意思是系统很忙,直到 tbl_clientinfo 中的所有 IP 地址都通过 ping 类。我希望该系统检查所有行,因为我正在处理项目的其他部分。

我做对了吗?

最佳答案

您的代码在单个线程上运行所有代码;你没有使用多线程。另外,为什么里面有一个 Thread.Sleep

尝试以下操作:

  1. 查询数据库并获取所有 IP
  2. 在一个循环中,启动一个将运行 PingIP for each IP 地址的新线程

注意:您也可以在每次从数据库中获取新行时启动一个新线程

示例:

    static void Main(string[] args)
{
// get the IPs from the database so you can iterate over them
List<string> ips = new List<string>()
{
"google.com",
"127.0.0.1",
"stackoverflow.com"
};

foreach (var ip in ips)
{
// See http://stackoverflow.com/questions/4744630/unexpected-behaviour-for-threadpool-queueuserworkitem
// for reason to use another variable in the loop
string loopIp = ip;
WaitCallback func = delegate(object state)
{
if (PingIP(loopIp))
{
Console.WriteLine("Ping Success");
}
else
{
Console.WriteLine("Ping Failed");
}
};
ThreadPool.QueueUserWorkItem(func);
}

Console.ReadLine();
}

public static bool PingIP(string IP)
{
bool result = false;
try
{
Ping ping = new Ping();
PingReply pingReply = ping.Send(IP);

if (pingReply.Status == IPStatus.Success)
result = true;
}
catch
{
result = false;
}

return result;
}

关于c# - ping 大量 IP 地址的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8025532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com