多线程端口扫描的问题
黑云笑月 2009-04-15 08:23:06 我想对任意指定IP段的任意端口进行扫描,例如对168.0.0.1-168.0.0.255段的80-1000端口进行扫描。思路是用for循环读取每个IP地址,再对IP地址中的端口才用多线程扫描。我第一次使多线程,不知道这样写对不对,多线程这段代码是
for(tempport = Portlist[j].iPortStart; tempport <= Portlist[j].iPortEnd; tempport++)
{
//传递给线程的变量,包括IP和端口
pInfor = new infor;
strcpy(pInfor->ip,dest_ip);
pInfor->port=tempport;
while(nThreadNum > 200)
{
Sleep(10);
}
//创建线程
handle = CreateThread(NULL,0,port_scan,(LPVOID)pInfor,0,&dwThreadId);
if(NULL!= handle)
{
hScanThreads[nThreadNum++] = handle;
}
}
结果运行时,往往扫描了168.0.0.1-168.0.0.3后就报内存读错误,但单步调试时没有错,请高手指点下如何改正。