亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? thread.cpp

?? 一個類似爬行的程序,用于了一些數學方法,能用的,也不錯的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	{
		// catch errors from WinINet
		dwRet = pEx->m_dwError;
		m_pServer = NULL;
		pEx->Delete();
		CleanUp();
		return   dwRet;
	}

	m_strCurrentServer = ServerName;

	try
	{

		// This can never return NULL. The call may have failed, but it can
		// never be null.
		m_pFile = m_pServer->OpenRequest(_T("GET"),strObject,NULL, m_nThreadID, NULL, NULL, dwHttpRequestFlags);
		m_pFile->SendRequest();

	}

	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		dwRet = pEx->m_dwError;
		m_pFile = NULL;
		pEx->Delete();
		CleanUp();
		return dwRet;
	}

	return dwRet;
}


DWORD CSpiderThread::GetHttpStatus(LPCTSTR lpServerName,LPCTSTR strObject)
{

	if(lpServerName  == NULL || strObject == NULL)return 0;

	INTERNET_PORT nPort = INTERNET_DEFAULT_HTTP_PORT;
	DWORD dwRet =  1;

	if (m_pSession == NULL) return dwRet;

	m_pSession->m_strHttpSite.Format("%s%s",lpServerName,strObject);

	dwRet =  2;

	if(m_pFile != NULL)
	{
		m_pFile->Close();
		delete m_pFile;
		m_pFile=NULL;

	}
	
	if (m_bDone)	return 0;

	if (m_strCurrentServer != lpServerName)
	{
		// Picked a new server, close out connection and make a new one:
		if (m_pServer != NULL)
		{
			m_pServer->Close ();
			delete m_pServer;
			m_pServer = NULL;
		}
	}

	if (m_pServer == NULL)
	{
		try
		{

			m_pServer = m_pSession->GetHttpConnection(lpServerName,nPort);
		}

		catch (CInternetException* pEx)
		{
			// catch errors from WinINet
			//pEx->ReportError();
			dwRet = pEx->m_dwError;
			m_pServer = NULL;
			pEx->Delete();
			if(!CleanUp()) return FALSE;
			return dwRet;
		}
		if (m_bDone)	return 0;


		m_strCurrentServer = lpServerName;
	}


	if (m_bDone)
		return 0;
	if (m_pServer == NULL) return dwRet;
  
	try
	{

	// This can never return NULL. The call may have failed, but it can
	// never be null.
	m_pFile = m_pServer->OpenRequest(_T("GET"),strObject,NULL, m_nThreadID, NULL, NULL, dwHttpRequestFlags);
	m_pFile->SendRequest();
	
	}

	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		//pEx->ReportError();
		dwRet = pEx->m_dwError;
		m_pFile = NULL;
		pEx->Delete();
		if(!CleanUp()) return FALSE;
		if(dwRet == ERROR_INTERNET_TIMEOUT ) Sleep(1000);  // Connection timed out, try again on new connection
		dwRet = NewConnection(lpServerName,strObject);
		if(dwRet != HTTP_STATUS_OK) return dwRet;
	}

	if (m_bDone)	return 0;

	if(m_pFile != NULL)
		m_pFile->QueryInfoStatusCode(dwRet);

  return dwRet;


}

BOOL CSpiderThread::CheckAllURLs(LPCTSTR ServerName,ThreadParams *pThreadParams)

{    
	if(ServerName == NULL) return FALSE;
	if(pThreadParams->m_pszURL.IsEmpty()) return FALSE;

	CString strMainURL = pThreadParams->m_pszURL;

	CStringList list;
	POSITION pos=NULL;
	CString strObject,strSub;
	CString strServer,strURL,strTemp;
	DWORD dwServiceType;
	INTERNET_PORT nPort;
	LPCTSTR lpszText =     pThreadParams->m_Contents.LockBuffer();
	if(lpszText == NULL) return FALSE;

	if(!GetHref(lpszText,_T("href"),list))
		return FALSE;

	pThreadParams->m_Contents.UnlockBuffer();
	if (m_bDone)
		return 0;


	int count = GetServerList(pThreadParams->m_pszURL,list,strSub);
	
	int pdest;
	int i;
	
	CriticalSectionLock  plock;
	
	
	lURLCount += count;
	
	::SendMessage(pThreadParams->m_hwndNotifyProgress,
				WM_USER_URL_STATUS, 0, (LONG)lURLCount);
	
	if (m_bDone)	return 0;

	if(count>0)
	{


		for(i=0; i<count; i++)		
		{
			if( ( pos = list.FindIndex( i)) != NULL )
			{
				strObject = list.GetAt( pos );

				pdest = strObject.Find(ServerName);   // external link check
				
				if( pdest < 0 )
				    GetStatus(pThreadParams,HTTP_CHECK_URL,strObject);		// create new threads for each URL
				
				if (m_bDone)	return 0;
				if(lThreadCount >= MAXIMUM_WAIT_OBJECTS) 
						WaitForSingleObject(hConnection,INFINITE);
			
								
			}
		}

		for(i=0; i<count; i++)
		{
			if( ( pos = list.FindIndex( i)) != NULL )
			{
				strObject = list.GetAt( pos );

				pdest = strObject.Find(ServerName);  
				
				if( pdest > 0 )
				{
					if(AfxParseURL(strObject,dwServiceType,strServer,strURL,nPort))
					{
						if(!strURL.IsEmpty())
							CheckURL(ServerName,strURL,pThreadParams);  // check root links in the current file
					}
				}

				if (m_bDone)	return 0;

			}
		}

		if(pThreadParams->m_RootLinks)
		{
			for(i=0; i<count; i++)
			{
				if( ( pos = list.FindIndex( i)) != NULL )
				{
					strObject = list.GetAt( pos );
					pdest = strObject.Find(ServerName);  // get root files and check the links in those files 
					if ( pdest > 0)
					{
						pdest = strObject.Find(strSub);

						if(( pdest > 0 ) && (strMainURL.Compare(strObject)!=0))
							GetStatus(pThreadParams,HTTP_CHECK_URL_ROOT,strObject);  // create new thread

					}
					
					if (m_bDone)	return 0;

					if(lThreadCount >= MAXIMUM_WAIT_OBJECTS) 
						WaitForSingleObject(hConnection,INFINITE);
					

				}
			}
		}

	}

	return TRUE;
}




BOOL CSpiderThread::PrintLine(ThreadParams *pThreadParams,LPCSTR line)
{
	pThreadParams->m_string = line;
	::SendMessage(pThreadParams->m_hwndNotifyProgress,
				WM_USER_THREAD_PRINT, 0, (LPARAM)pThreadParams);

	return TRUE;
}

BOOL CSpiderThread::PrintFile(ThreadParams *pThreadParams,
							LPCSTR line)
{
	::SendMessage(pThreadParams->m_hwndNotifyProgress,
				WM_USER_THREAD_FILE, 0, (LPARAM)line);

	return TRUE;
}
BOOL CSpiderThread::PrintStatus(ThreadParams *pThreadParams,
							LPCSTR line)
{
	::SendMessage(pThreadParams->m_hwndNotifyProgress,
				WM_USER_THREAD_STATUS, 0, (LPARAM)line);

	return TRUE;
}

BOOL CSpiderThread::GetStatus(ThreadParams *pThreadParams,UINT ntype,LPCSTR line)
{
	pThreadParams->m_checkURLName.Format("%s",(LPCSTR)line);
	::SendMessage(pThreadParams->m_hwndNotifyProgress,
				WM_USER_THREAD_GETSTATUS, (UINT)ntype, (LPARAM)pThreadParams);

	return TRUE;
}

BOOL CSpiderThread::GetNewFile(ThreadParams *pThreadParams,UINT ntype,LPCSTR line)
{
	pThreadParams->m_checkURLName.Format("%s",(LPCSTR)line);
	::SendMessage(pThreadParams->m_hwndNotifyProgress,
				WM_USER_THREAD_GETNEWFILE, (UINT)ntype, (LPARAM)pThreadParams);

	return TRUE;
}

BOOL CSpiderThread::CleanUp()
{
	m_strCurrentServer.Empty();

	try
	{
		if(m_pFile != NULL)
		{	m_pFile->Close();
			delete m_pFile;
			m_pFile= NULL;
		}

		

		if (m_pServer!= NULL)
		{
			m_pServer->Close();
			delete m_pServer;
			m_pServer = NULL;
		
		}


		if (m_pSession != NULL)
		{
			m_pSession->Close();
			delete m_pSession;
			m_pSession = NULL;
		}
		
	}
	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		pEx->Delete();
		return FALSE;
	}
	
	if (m_bDone)	return 0;

	return TRUE;


}


BOOL CSpiderThread::ParseURL(ThreadParams *pThreadParams)
{
	BOOL bRet = FALSE;
	if(pThreadParams->m_pszURL.IsEmpty()) return bRet;

	LPCTSTR lpsz = pThreadParams->m_pszURL;
	if(lpsz  == NULL) return bRet;

	int nLen = lstrlen(lpsz);
	int i=0;
	while (nLen)
	{
		if( *lpsz == '/')	i++;
		++lpsz;
		nLen--;
		
	}
	if( i< 3) pThreadParams->m_pszURL += "/";


	try
	{
		AfxParseURL(pThreadParams->m_pszURL,pThreadParams->m_dwServiceType,pThreadParams->m_strServerName,pThreadParams->m_strObject,pThreadParams->m_nPort);

	}
	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		//pEx->ReportError();
		pEx->Delete();
		return bRet;
	}

	
	lpsz = pThreadParams->m_strObject;
	if(lpsz  == NULL) return bRet;
	bRet = TRUE;
	nLen = lstrlen(lpsz);

	BOOL bdot = FALSE;
	while (nLen)
	{
		if( *lpsz == '.') bdot = TRUE;
		++lpsz;
		nLen--;
		
	}
	if(pThreadParams->m_strObject.GetLength()-1 > 0)
	{
	if( bdot == FALSE && pThreadParams->m_strObject[pThreadParams->m_strObject.GetLength()-1] != '/')
		pThreadParams->m_strObject += "/";
	}

	return bRet;
}



int CSpiderThread::GetServerList(LPCTSTR pszURL,CStringList& list, CString& lpSub)
{
	if(pszURL  == NULL) return FALSE;

	CStringList Tlist;
	CString strObject,strTemp,str="";
	CString strSub,strServer,strURL,strServerName;
	POSITION pos=NULL;
	POSITION Tpos=NULL;
	LPCTSTR lpsz;
	int nLen;
	int count = 0;
	int pdest2;

	count = list.GetCount();
	int Tcount,i,ti,pdest,j,k;

	for(i=0; i<count; i++)
	{
		if( ( pos = list.FindIndex( i)) != NULL )
		{
			strObject = list.GetAt( pos );
			if(strObject.GetLength() -1 > 0)
			{
				k=0; j= 0;
				lpsz = strObject;
				if(lpsz  != NULL)
				{
					nLen = lstrlen(lpsz);
					while (nLen)
					{
						if( *lpsz == ':') k=j;
						++lpsz;
						nLen--;
						j++;
						
					}
				}
				if(k > 6)
				{
					if(strObject[k-4] == 'h' )		
					{
						strURL =  strObject.Right(strObject.GetLength() - k+4 );
						strObject = strURL;
					}
				}
				pdest = strObject.FindOneOf("# %");     // don't check   /index.html#new
				pdest2 = strObject.Find("ftp:");     // don't check   ftp://somefile.zip

				if(pdest<0 &&  pdest2 < 0  &&  strObject[0] != '.')   // don't check      ../somedirectory
				{
					Tcount = Tlist.GetCount();
					for(ti=0; ti<Tcount; ti++)
					{
						if( ( Tpos = Tlist.FindIndex( ti)) != NULL ) // remove duplicate URLs
						{
							strTemp = Tlist.GetAt( Tpos );
							if (strObject.Compare(strTemp) == 0)
								Tlist.RemoveAt(Tpos);
						}
					}
					if(!strObject.IsEmpty()) Tlist.AddTail(strObject);
				}
			}
		}
	}

	list.RemoveAll();

	Tcount = Tlist.GetCount();
	for(ti=0; ti<Tcount; ti++)		// get rid of /  in  /directory/somefile.html
	{
		if( ( Tpos = Tlist.FindIndex( ti)) != NULL )
		{
			strTemp = Tlist.GetAt( Tpos );
					
			
			if(strTemp.GetLength()-1 > 0)
			{
			
				if (strTemp[0] != '/' )
					str = strTemp;
				else
					str = strTemp.Right(strTemp.GetLength()-1);
				
				list.AddTail(str);
			}
		}
	}
		
	strURL = pszURL;
	strSub = "";
	strServer = "";
	strTemp = "";
	CString strDirectory="";
	

	lpsz = pszURL;
	if(lpsz  != NULL)
	{

		nLen = lstrlen(lpsz);
		i=0;
		while (nLen)
		{
			if( *lpsz == '/')	i++;
		
			++lpsz;
			nLen--;
			
		}
		if( i<=2) strURL += "/";
	}

	if(!strURL.IsEmpty()){
		pdest = strURL.Find("//");
		if (pdest >= 0)
		{
			strTemp = strURL.Mid(pdest +2);  // get rid of http://
		}

	}
	if(!strTemp.IsEmpty()){
		pdest = strTemp.Find( '/');
		if (pdest >= 0)
			strServer = strTemp.Left(pdest);  // find server name
	}
	if(!strURL.IsEmpty()){
		pdest = strURL.ReverseFind('/');  // get rid of URL Object
		if (pdest >= 0)
			strSub =  strURL.Left(pdest);
	}
	
	if(!strSub.IsEmpty()){				// find directory on server 
		pdest = strSub.Find(strServer);
		if (pdest >= 0)
			strDirectory =  strSub.Right(strSub.GetLength()-1 - pdest - strServer.GetLength());
	}
	strSub ="";
	if(strDirectory.GetLength()-1 > 0){
		
		if (strDirectory[0] != '/' )
				strSub += "/" + strDirectory;
		else strSub = strDirectory;

		if(strSub.GetLength()-1 > 0){

			if (strDirectory[strDirectory.GetLength()-1] != '/'  &&  strSub[strSub.GetLength()-1] != '/')
				strSub += "/" ;
		}
	}

	if(strSub.IsEmpty()) strSub = "/" ;

	lpSub = strSub;


	Tlist.RemoveAll();
	count = list.GetCount();

		for(i=0; i<count; i++)			//  add the server name and directory to the URL
		{
			if( ( pos = list.FindIndex( i)) != NULL )
			{
				strObject = list.GetAt( pos );
				if(!strObject.IsEmpty())
				{

					pdest = strObject.Find( _T("http"));
				
					if( pdest < 0 )
						strURL = 	_T("http://") + strServer + strSub + strObject;  // need to fix for https
					else
						strURL = strObject;

					Tlist.AddTail(strURL);
				}

			}
		}

	list.RemoveAll();
	count = Tlist.GetCount();			// rewrite the CStringList list 

		for(i=0; i<count; i++)
		{
			if( ( pos = Tlist.FindIndex( i)) != NULL )
			{
				strObject = Tlist.GetAt( pos );
				if(!strObject.IsEmpty())
				{

					pdest = strObject.Find("amp;");     // fix  /index.cgi?&amp;file=....#new
					if(pdest>0)
					{
						strURL = strObject.Left(pdest);
						strTemp =  strObject.Right(strObject.GetLength() - pdest - 1 -3);
						strObject = strURL + strTemp + '\0';

					}

					
					int npos = LookUpEntry((LPCTSTR)strObject);
					if(npos < 0  )
						list.AddTail(strObject);
				}

			}
		}


	return count;

}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品自拍偷拍| 国产成人亚洲综合a∨婷婷图片 | 色综合色综合色综合色综合色综合 | 国产成人综合在线| 亚洲精品免费视频| 精品国产一区二区三区四区四| 国产成人日日夜夜| 亚洲丶国产丶欧美一区二区三区| 欧美不卡在线视频| 欧美三级日本三级少妇99| 日韩黄色免费电影| 中文字幕在线观看一区| 在线综合亚洲欧美在线视频| 成人av电影免费观看| 麻豆精品一区二区| 亚洲成人免费观看| 亚洲女同ⅹxx女同tv| 久久精品亚洲乱码伦伦中文| 色综合天天性综合| 国产乱码精品一区二区三区五月婷| 亚洲免费伊人电影| 亚洲欧美一区二区久久| 久久久久久影视| 26uuu久久综合| 欧美日韩精品欧美日韩精品一| 国产精品一二三区| 国产乱码精品一区二区三 | 91毛片在线观看| 成人久久久精品乱码一区二区三区| 三级久久三级久久久| 亚欧色一区w666天堂| 亚洲妇女屁股眼交7| 午夜视频在线观看一区二区| 亚洲大片在线观看| 秋霞电影网一区二区| 久久国产日韩欧美精品| 国产又粗又猛又爽又黄91精品| 日本美女一区二区三区视频| 亚洲一区二区精品视频| 日av在线不卡| 国产在线精品免费| 国产成人在线视频播放| zzijzzij亚洲日本少妇熟睡| 色网综合在线观看| 欧美精品xxxxbbbb| 久久久久久97三级| 亚洲欧美日韩系列| 亚洲一区二区三区影院| 久草这里只有精品视频| 99免费精品视频| 宅男噜噜噜66一区二区66| 国产亚洲婷婷免费| 一二三区精品视频| 国产精品亚洲视频| 成人免费视频播放| 欧美美女视频在线观看| 欧美国产日本视频| 日本美女一区二区三区| 色综合久久久网| 精品国产一区二区三区四区四| 亚洲精品视频在线| 成人午夜又粗又硬又大| 欧美日韩在线播放一区| 国产精品久久久久久久第一福利| 亚洲va天堂va国产va久| 色婷婷综合五月| 一区二区三区波多野结衣在线观看 | 亚洲午夜在线电影| 欧美午夜视频网站| 婷婷综合另类小说色区| 欧美三级一区二区| 午夜伊人狠狠久久| 欧美一级午夜免费电影| 美女网站色91| 国产精品理论片| 美女国产一区二区| 91婷婷韩国欧美一区二区| 欧美日韩不卡一区| 国产精品国产三级国产| 国产一区二区美女| 91精品综合久久久久久| 亚洲欧美日韩一区| 精品一区二区免费看| 久久免费电影网| 美国十次综合导航| 6080国产精品一区二区| 国产精品久久久久9999吃药| 精品一区二区三区蜜桃| 欧洲一区二区三区在线| 国产精品免费看片| 日本欧美肥老太交大片| 欧美日韩免费一区二区三区| 亚洲激情中文1区| 成人sese在线| 欧美一区二区三区小说| 一区二区三区欧美| 欧美亚洲综合在线| 亚洲一区二区三区美女| 色综合夜色一区| 一个色综合网站| 4438成人网| 韩国三级中文字幕hd久久精品| 精品av久久707| 极品少妇一区二区| 欧美一区二区三区公司| 亚洲三级电影网站| 一本大道久久a久久综合| 天天综合网 天天综合色| 日韩一级大片在线| 成人性生交大片免费看在线播放 | 性久久久久久久久| 91精品免费观看| 国产精品伊人色| 国产精品色婷婷久久58| 日本韩国一区二区三区| 日韩精品亚洲一区二区三区免费| 欧美成人vps| 国产综合色在线视频区| 欧美日本一区二区三区| 国产乱码精品一区二区三区五月婷 | 久久av中文字幕片| 亚洲另类中文字| 久久亚洲一级片| 精品视频在线看| 福利电影一区二区| 午夜视频一区在线观看| 欧美一区二区免费观在线| 成人中文字幕电影| 日本欧洲一区二区| 亚洲私人影院在线观看| 久久影视一区二区| 欧美人与禽zozo性伦| 99免费精品视频| 国产精品一级片在线观看| 青青青爽久久午夜综合久久午夜| 精品国精品自拍自在线| 欧美日韩成人在线一区| 99久久免费国产| 久久99国产精品麻豆| 天堂蜜桃一区二区三区| 中文字幕一区二区三区乱码在线 | 91视视频在线直接观看在线看网页在线看 | 成人免费高清视频在线观看| 精品一区二区三区不卡| 日韩经典中文字幕一区| 日韩国产精品91| 日本成人中文字幕在线视频| 夜夜精品视频一区二区 | 国产日韩在线不卡| 日韩精品一区二区三区在线播放 | 国产激情一区二区三区四区 | 亚洲美女区一区| 亚洲图片欧美激情| 一区二区三区高清| 一区二区欧美国产| 亚洲成人动漫在线免费观看| 亚洲午夜一区二区三区| 精品处破学生在线二十三| 国产日韩欧美电影| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品久久毛片a| 亚洲狼人国产精品| 天堂va蜜桃一区二区三区漫画版| 亚洲高清久久久| 欧美激情一区二区三区在线| 欧美理论在线播放| 久久一夜天堂av一区二区三区| 国产精品美女一区二区| 亚洲最快最全在线视频| 免费人成精品欧美精品| 成人av集中营| 日韩一区二区视频| 中文字幕免费在线观看视频一区| 欧美精品第1页| 欧洲国内综合视频| 日韩欧美国产成人一区二区| 亚洲国产精品激情在线观看| 丝袜美腿成人在线| 91在线porny国产在线看| 3d成人动漫网站| 一区二区三区在线视频免费| eeuss影院一区二区三区| 欧美在线不卡一区| 韩国女主播一区二区三区| 日韩av电影一区| 国产精品18久久久久久久久久久久| 成人黄色国产精品网站大全在线免费观看 | 色综合久久99| 色琪琪一区二区三区亚洲区| 日韩欧美中文字幕公布| 日韩一级欧美一级| 一区二区在线观看av| 国产精品影音先锋| 久久综合九色欧美综合狠狠| 日韩精品每日更新| 日本丰满少妇一区二区三区| 久久亚洲综合色| 亚洲国产综合在线| 亚洲美女视频在线| 日韩电影在线一区二区三区|