我创建了非常简单的扫描程序,它将占用ip范围,在此范围内获取随机ip并检查特定端口是否打开。我使用TcpClient
string PORT_CHECK(string IPorNAME, int port)
{
TcpClient tcpClient = new TcpClient();
tcpClient.ReceiveTimeout = 10000;
tcpClient.SendTimeout = 10000;
try
{
tcpClient.Connect(IPorNAME, port);
return IPorNAME + " : OPEN";
}
catch (Exception)
{
return IPorNAME + " : CLOSED";
}
}
我使用threadpool
void main()
{
while (stopper == false)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(bGround));
Thread.Sleep(1);
}
}
它每秒检查大约10 ips,例如像VNC这样的扫描仪达到每秒大约500的速度,这主要差异来自于,以及如何加速我的代码?
答案 0 :(得分:2)
您已将ReceiveTimeout
和SendTimeout
都设置为10000
毫秒(10秒)。这意味着它将等待10秒直到它确定它不在那里,我建议大大降低这个数字,大约一秒钟(1000
)或更低。