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

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

?? spider.cs

?? (c#)Internet蜘蛛程序.rar
?? CS
字號:
using System;
using System.Collections;
using System.Net;
using System.IO;
using System.Threading;

namespace Spider
{
	/// <summary>
	/// The main class for the spider. This spider can be used with the 
	/// SpiderForm form that has been provided. The spider is completely 
	/// selfcontained. If you would like to use the spider with your own
	/// application just remove the references to m_spiderForm from this file.
	/// 
	/// The files needed for the spider are:
	/// 
	/// Attribute.cs - Used by the HTML parser
	/// AttributeList.cs - Used by the HTML parser
	/// DocumentWorker - Used to "thread" the spider
	/// Done.cs - Allows the spider to know when it is done
	/// Parse.cs - Used by the HTML parser
	/// ParseHTML.cs - The HTML parser
	/// Spider.cs - This file
	/// SpiderForm.cs - Demo of how to use the spider
	/// 
	/// This spider is copyright 2003 by Jeff Heaton. However, it is
	/// released under a Limited GNU Public License (LGPL). You may 
	/// use it freely in your own programs. For the latest version visit
	/// http://www.jeffheaton.com.
	///
	/// </summary>
	public class Spider
	{
		/// <summary>
		/// The URL's that have already been processed.
		/// </summary>
		private Hashtable m_already;

		/// <summary>
		/// URL's that are waiting to be processed.
		/// </summary>
		private Queue m_workload;

		/// <summary>
		/// The first URL to spider. All other URL's must have the
		/// same hostname as this URL. 
		/// </summary>
		private Uri m_base;

		/// <summary>
		/// The directory to save the spider output to.
		/// </summary>
		private string m_outputPath;

		/// <summary>
		/// The form that the spider will report its 
		/// progress to.
		/// </summary>
		private SpiderForm m_spiderForm;

		/// <summary>
		/// How many URL's has the spider processed.
		/// </summary>
		private int m_urlCount = 0;

		/// <summary>
		/// When did the spider start working
		/// </summary>
		private long m_startTime = 0;

		/// <summary>
		/// Used to keep track of when the spider might be done.
		/// </summary>
		private Done m_done = new Done();		

		/// <summary>
		/// Used to tell the spider to quit.
		/// </summary>
		private bool m_quit;

		/// <summary>
		/// The status for each URL that was processed.
		/// </summary>
		enum Status { STATUS_FAILED, STATUS_SUCCESS, STATUS_QUEUED };


		/// <summary>
		/// The constructor
		/// </summary>
		public Spider()
		{
			reset();
		}

		/// <summary>
		/// Call to reset from a previous run of the spider
		/// </summary>
		public void reset()
		{
			m_already = new Hashtable();
			m_workload = new Queue();
			m_quit = false;
		}

		/// <summary>
		/// Add the specified URL to the list of URI's to spider.
		/// This is usually only used by the spider, itself, as
		/// new URL's are found.
		/// </summary>
		/// <param name="uri">The URI to add</param>
		public void addURI(Uri uri)
		{
			Monitor.Enter(this);
			if( !m_already.Contains(uri) )
			{
				m_already.Add(uri,Status.STATUS_QUEUED);
				m_workload.Enqueue(uri);
			}
			Monitor.Pulse(this);
			Monitor.Exit(this);
		}

		/// <summary>
		/// The URI that is to be spidered
		/// </summary>
		public Uri BaseURI 
		{
			get
			{
				return m_base;
			}

			set
			{
				m_base = value;
			}
		}

		/// <summary>
		/// The local directory to save the spidered files to
		/// </summary>
		public string OutputPath
		{
			get
			{
				return m_outputPath;
			}

			set
			{
				m_outputPath = value;
			}
		}

		/// <summary>
		/// The object that the spider reports its
		/// results to.
		/// </summary>
		public SpiderForm ReportTo
		{
			get
			{
				return m_spiderForm;
			}

			set
			{
				m_spiderForm = value;
			}
		}

		/// <summary>
		/// Set to true to request the spider to quit.
		/// </summary>
		public bool Quit
		{
			get
			{
				return m_quit;
			}

			set
			{
				m_quit = value;
			}
		}

		/// <summary>
		/// Used to determine if the spider is done, 
		/// this object is usually only used internally
		/// by the spider.
		/// </summary>
		public Done SpiderDone
		{
			get
			{
				return m_done;
			}

		}

		/// <summary>
		/// Called by the worker threads to obtain a URL to
		/// to process.
		/// </summary>
		/// <returns>The next URL to process.</returns>
		public Uri ObtainWork()
		{
			Monitor.Enter(this);
			while(m_workload.Count<1)
			{
				Monitor.Wait(this);
			}


			Uri next = (Uri)m_workload.Dequeue();
			if(m_spiderForm!=null)
			{
				m_spiderForm.SetLastURL(next.ToString());
				m_spiderForm.SetProcessedCount(""+(m_urlCount++));
				long etime = (System.DateTime.Now.Ticks-m_startTime)/10000000L;
				long urls = (etime==0)?0:m_urlCount/etime;
				m_spiderForm.SetElapsedTime( etime/60 + " minutes (" + urls +" urls/sec)" );
			}

			Monitor.Exit(this);
			return next;
		}

		/// <summary>
		/// Start the spider.
		/// </summary>
		/// <param name="baseURI">The base URI to spider</param>
		/// <param name="threads">The number of threads to use</param>
		public void Start(Uri baseURI,int threads)
		{
			// init the spider
			m_quit = false;

			m_base = baseURI;
			addURI(m_base);
			m_startTime = System.DateTime.Now.Ticks;;
			m_done.Reset();
		
			// startup the threads

			for(int i=1;i<threads;i++)
			{				
				DocumentWorker worker = new DocumentWorker(this);
				worker.Number = i;
				worker.start();
			}

			// now wait to be done

			m_done.WaitBegin();
			m_done.WaitDone();			
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美一区二区三区| 午夜欧美2019年伦理| 国产亚洲综合性久久久影院| 精品久久久久久久久久久久久久久 | 色偷偷久久人人79超碰人人澡| 国产激情91久久精品导航| 国产精品香蕉一区二区三区| 国产乱码精品一区二区三区忘忧草 | 婷婷成人综合网| 日韩国产精品91| 久久国产生活片100| 国产在线精品一区二区三区不卡| 国产精品91一区二区| 成人黄色a**站在线观看| 91美女精品福利| 欧美人与z0zoxxxx视频| 日韩欧美电影一区| 中文在线资源观看网站视频免费不卡| 国产精品三级视频| 亚洲免费观看高清完整版在线观看 | 久久99精品国产.久久久久久 | 韩国女主播成人在线观看| 久久99久久久久久久久久久| 国产做a爰片久久毛片| 国产在线国偷精品免费看| 国产经典欧美精品| 99精品黄色片免费大全| 欧美日韩国产不卡| 日韩精品亚洲一区| 亚洲欧美福利一区二区| 亚洲小说欧美激情另类| 蜜桃一区二区三区在线| 国产精品一区二区你懂的| 99精品国产99久久久久久白柏 | 欧美精品乱人伦久久久久久| 日韩一卡二卡三卡| 国产农村妇女精品| 亚洲高清三级视频| 狠狠色丁香九九婷婷综合五月| 国产+成+人+亚洲欧洲自线| 91久久免费观看| 欧美大片在线观看| 亚洲视频在线一区观看| 美女任你摸久久| 色88888久久久久久影院野外| 正在播放一区二区| 中文字幕视频一区| 老司机精品视频线观看86 | 日韩欧美在线123| 中文一区二区在线观看| 日韩成人精品在线| 成人av午夜影院| 日韩一区二区免费在线观看| 国产精品国产自产拍在线| 视频一区在线播放| 91在线观看免费视频| 精品国产91亚洲一区二区三区婷婷| 中文字幕一区二区三区在线观看 | 亚洲一区二区精品视频| 国产美女精品人人做人人爽| 欧美性大战久久久久久久| 国产午夜亚洲精品羞羞网站| 日韩av电影一区| 欧美在线视频日韩| 国产精品久久免费看| 国产真实乱子伦精品视频| 欧美伦理视频网站| 亚洲免费观看高清完整版在线| 国产精品资源网| 欧美一区二区三区在线观看视频 | 国产专区欧美精品| 91精品国产综合久久久久久漫画| 1区2区3区欧美| 丁香婷婷深情五月亚洲| 精品日产卡一卡二卡麻豆| 亚洲成a人v欧美综合天堂下载| 不卡大黄网站免费看| 国产亚洲va综合人人澡精品| 免费看黄色91| 在线成人免费观看| 亚洲一区二区成人在线观看| 国产乱人伦偷精品视频不卡| 日韩午夜激情av| 性做久久久久久| 在线观看91视频| 伊人色综合久久天天| 91视频一区二区| 国产精品成人网| 不卡视频一二三| 国产欧美一区二区三区沐欲| 激情欧美一区二区三区在线观看| 欧美精品日韩一区| 日韩精品国产精品| 欧美精品成人一区二区三区四区| 亚洲综合免费观看高清完整版在线| 成人av免费在线观看| 国产精品久久久久久亚洲伦| 成人精品一区二区三区四区| 国产欧美视频一区二区三区| 国产乱人伦偷精品视频不卡 | 亚洲精品伦理在线| av不卡免费在线观看| 国产精品久久99| 成人高清在线视频| 国产精品国产自产拍高清av| aaa欧美大片| 亚洲精品国产一区二区精华液 | 天天操天天综合网| 在线免费视频一区二区| 中文字幕一区二区三区视频| 国内成人免费视频| 日韩精品一区二区三区在线播放 | 国产调教视频一区| 国产精品综合久久| 久久久蜜桃精品| 国产精品一卡二| 久久精品男人的天堂| 国产999精品久久| 亚洲欧美日韩国产另类专区| 欧美日韩中文字幕一区| 五月综合激情日本mⅴ| 欧美精品1区2区3区| 亚洲国产你懂的| 欧美三级电影一区| 日韩成人dvd| 日韩精品中文字幕一区| 麻豆免费看一区二区三区| 日韩精品一区二区三区在线观看| 蜜臂av日日欢夜夜爽一区| 欧美成人猛片aaaaaaa| 狠狠v欧美v日韩v亚洲ⅴ| 久久久久88色偷偷免费| 高清不卡一区二区在线| 亚洲免费伊人电影| 欧美美女一区二区在线观看| 精品一区二区在线看| 国产精品第13页| 欧美一区二区三区日韩| 国产福利一区二区三区视频在线| 亚洲欧美日韩中文播放| 91精品国产一区二区| 国产福利一区二区三区视频在线| 亚洲综合色在线| xfplay精品久久| 欧美午夜精品免费| 国产精品77777| 亚洲网友自拍偷拍| 国产日产欧美一区二区三区| 精品视频123区在线观看| 韩国毛片一区二区三区| 一区二区三区欧美在线观看| 精品精品国产高清a毛片牛牛| 99久久99久久免费精品蜜臀| 全国精品久久少妇| 亚洲人成在线播放网站岛国| 精品人伦一区二区色婷婷| 99久久精品免费看| 久久www免费人成看片高清| 亚洲天堂2016| 国产精品中文字幕日韩精品| 久久精品人人爽人人爽| 在线观看日韩国产| 懂色av一区二区夜夜嗨| 日本色综合中文字幕| 亚洲人成在线播放网站岛国| 久久免费看少妇高潮| 欧美日韩一区视频| 91丨九色丨蝌蚪丨老版| 国产尤物一区二区| 日韩综合一区二区| 亚洲天堂av老司机| 中文欧美字幕免费| 精品人在线二区三区| 欧美日韩免费视频| 99re热视频这里只精品| 国产精品一区二区在线观看不卡| 日本亚洲三级在线| 亚洲综合成人在线| 国产精品伦一区| 日本一区二区三区视频视频| 日韩一区二区在线看片| 欧美日韩视频在线观看一区二区三区 | 一区二区三区欧美在线观看| 中文字幕精品在线不卡| 久久先锋影音av| 日韩视频在线永久播放| 欧美二区乱c少妇| 精品视频一区 二区 三区| 日本韩国精品在线| av一本久道久久综合久久鬼色| 韩国成人福利片在线播放| 欧美96一区二区免费视频| 国产精品嫩草99a| 国产精品视频一区二区三区不卡| 久久一日本道色综合| 欧美成人a在线| 欧美一区二区视频在线观看2022| 欧美精品久久一区二区三区| 欧美日韩精品福利| 制服丝袜中文字幕亚洲|