【正文】
議真是通過“三次握手” 的方式保證了傳輸?shù)目煽啃?。TCP 套接字是一種流套接字(stream socket) 。IPv4 給 TCP、UDP 、SCTP、ICMP 和 IGMP 提供分組遞送服務。本課題將采用 IPv4 協(xié)議作為開發(fā)基礎??蛻魟t在需要服務時向服務器提出申請。在 TCP/IP 協(xié)議中 IP 層主要負責網(wǎng)絡主機的定位,數(shù)據(jù)傳輸?shù)穆酚?,?IP 地址可以唯一地確定 Inter 上的一臺主機。 JAVA 網(wǎng)絡編程網(wǎng)絡編程就是兩個或多個設備之間的數(shù)據(jù)交換,其實更具體的說,網(wǎng)絡編程就是兩個或多個程序之間的數(shù)據(jù)交換,和普通的單機程序相比,網(wǎng)絡程序最大的不同就是需要交換數(shù)據(jù)的程序運行在不同的計算機上,這樣就造成了數(shù)據(jù)交換的復雜。這樣使它在共享的線程之間可以相互協(xié)調(diào)。多數(shù) JAVA 同步是以對象鎖定為中心的。當線程的 run 方法運行完畢,線程將被拋棄,進入死亡狀態(tài)。 (i = + i )。線程必須通過 run()方法的自然結束而結束。即當用戶離開含有該小應用程序的頁面時,瀏覽器調(diào)用 stop()方法,將 clockThread 賦值為 null,這樣在 run()的 while 循環(huán)時條件就為false,這樣線程運行就結束了。所謂阻塞狀態(tài)是正在運行的線程沒有運行結束,暫時讓出 CPU,這時其它處于就緒狀態(tài)的線程就可以獲得 CPU 時間,進入運行狀態(tài)。3. 運行狀態(tài)(Running) 當線程獲得 CPU 時間后,它才進入運行狀態(tài),真正開始執(zhí)行 run()方法,這里 run()方法中是一個循環(huán),循環(huán)條件是 true。處于就緒狀態(tài)的線程并不一定立即運行 run()方法,線程還必須同其它線程競爭CPU 時間,只有獲得 CPU 時間才可以運行線程。當線程對象調(diào)用 start()方法即啟動了線程,如 ()。處于該狀態(tài)的線程僅僅是空的線程對象,并沒有為其分配系統(tǒng)資源。線程的狀態(tài)如圖 所示:圖 線程的五種狀態(tài)下面以前面的 Java 小程序為例說明線程的狀態(tài):1. 新建狀態(tài)(New Thread)當 Applet 啟動時調(diào)用 Applet 的 start()方法,此時小應用程序就創(chuàng)建一個 Thread 對新建狀態(tài) 就緒狀態(tài)阻塞狀態(tài) 運行狀態(tài) 死亡狀態(tài)沈陽理工大學學士學位論文14象 clockThread。在使用 Runnable 接口時,不能直接創(chuàng)建所需類的對象并運行它,而是必須從Thread 類的一個實例內(nèi)部運行它。每個線程都是通過某個特定 Thread 對象所對應的方法 run()來完成其操作的,方法run()稱為線程體。public ThreadGroup getThreadGroup() 返回該線程所屬的線程組對象。public void start() 由 JVM 調(diào)用線程的 run()方法,啟動線程開始執(zhí)行。public static void sleep(long millis) throws InterruptedExceptionpublic static void sleep(long millis, int nanos) throws InterruptedException使當前正在執(zhí)行的線程暫時停止執(zhí)行指定的毫秒時間。同時 Thread 類也是線程類,該類的構造方法如下:public Thread() public Thread(Runnable target)public Thread(String name)public Thread(Runnable target, String name)public Thread(ThreadGroup group, Runnable target)public Thread(ThreadGroup group, String name)public Thread(ThreadGroup group, Runnable target, String name)target 為線程運行的目標對象,即線程調(diào)用 start()方法啟動后運行那個對象的 run()方法,該對象的類型為 Runnable,若沒有指定目標對象,則以當前類對象為目標對象;name 為線程名,group 指定線程屬于哪個線程組。在 包中定義了 Runnable 接口和Thread 類。JAVA 的線程是通過 類來實現(xiàn)的,它內(nèi)部實現(xiàn)了虛擬 CPU 的功能,能夠接收和處理傳遞給它的代碼和資料,并提供了獨立的運行控制功能。,需要防止線程死鎖情況的發(fā)生。 不足,會影響性能,因為操作系統(tǒng)需要在它們之間切換。程序的運行速度可能加快。一個線程 兩個線程沈陽理工大學學士學位論文11很多應用程序是用多線程實現(xiàn)的,如 Hot Java Web 瀏覽器就是多線程應用的例子。 j 100。例如,for(int i = 0。線程(thread)則是進程中的一個單個的順序控制流。線程內(nèi)運行的代碼只能在該上下文內(nèi)。線程和進程的相似之處在于,線程和運行的程序都是單個順序控制流。 JAVA 多線程在一個程序中,一些獨立運行的程序片斷叫做“線程” (Thread) ,利用它編程的概念就叫作“多線程處理” 。這個狀態(tài)代碼必須和 WWWAuthenticate 報頭域一起使用 403 Forbidden 服務器收到請求,但是拒絕提供服務。 4xx: 客戶端錯誤—請求有語法錯誤或請求無法實現(xiàn)。狀態(tài)代碼的第一個數(shù)字定義了響應的類別,后面兩位沒有具體的分類。以下是二者的區(qū)別:1. GET 提交的數(shù)據(jù)會放在 URL 之后,以? 分割 URL 和傳輸數(shù)據(jù),參數(shù)之間以amp。URI 完整地指定了要訪問的網(wǎng)絡資源,通常只要給出相對于服務器的根目錄的相對目錄即可,因此總是以“/”開頭,最后,協(xié)議版本聲明了通信過程中使用 HTTP 的版本。OPTIONS 請求查詢服務器的性能,或查詢與資源相關的選項和需求。例如: 目前支持 7 種請求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE 和 TARCE。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。無連接:無連接的含義是限制每次連接只處理一個請求。每種方法規(guī)定了客戶與服務器聯(lián)系的類型不同。HTML 沈陽理工大學學士學位論文7是一種用于創(chuàng)建文文件的標記語言,這些文文件包含到相關信息的鏈接。是萬維網(wǎng)(world wide web )交換信息的基礎。因此 URL 是與因特網(wǎng)相連的機器上的任何可訪問對象的一個指針。統(tǒng)一資源定位符 URL 是對可以從因特網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示。這比較適合于小型的網(wǎng)站,因為如果太多文件都放在根目錄下的話,制作和維護起來比較麻煩。統(tǒng)一資源標志符確定一個資源,而統(tǒng)一資源定位符不但確定一個資源,而且還表示出它在哪里。在因特網(wǎng)的歷史上,統(tǒng)一資源定位符的發(fā)明是一個非?;A的步驟。 系統(tǒng)設計框圖 否 是 否 是沈陽理工大學學士學位論文5從文檔中讀取一個URL用代理訪問 URL 鏈接所指的地址,打開網(wǎng)絡連接獲取網(wǎng)頁源代碼去處網(wǎng)頁標簽,空格等多余代碼根據(jù)提取的信息,形成 XML 文檔保存在固定文件夾中是否讀到URL是否獲完整源代碼從文檔中讀取一個URL結束讀取URL圖 網(wǎng)頁解析部分流程圖選定文件夾,遍歷該文件夾將獲得的文件顯示在第一個Table 中選擇對文件的操作打開,刪除,添加到上傳列表如果添加到上傳列表,單機右鍵,選擇操作,如開始上傳 圖 客戶端文件遍歷流程圖 圖 服務器端與客戶端通信流程圖 網(wǎng)絡爬蟲的相關技術 URL統(tǒng)一資源定位符(URL,英語 UniformResourceLocator 的縮寫)也被稱為網(wǎng)頁地址,是因特網(wǎng)上標準的資源的地址。 無休止的跳轉。動態(tài) URL 簡單的說就是帶有問號、等號及參數(shù)的網(wǎng)址就是動態(tài)URL,動態(tài) URL 不利于搜索引擎蜘蛛的爬行和抓取。如果未開啟,則無法進行訪問,訪問頁面顯示的也不會正常,這種方式會讓蜘蛛無法進行訪問。同時,支持根據(jù)語義信息提出的查詢?,F(xiàn)今,網(wǎng)絡爬蟲主要分為通用爬蟲和聚焦爬蟲兩類。 國內(nèi)外技術發(fā)展現(xiàn)狀因為搜索引擎的商業(yè)化應用帶來了巨大的商業(yè)價值,所以作為搜索引擎的核心部分的網(wǎng)絡爬蟲技術,也理所應當?shù)某蔀榱藝鴥?nèi)外研究的熱點。同年 4 月,斯坦福(Stanford )大學最為著名的兩名博士生,美籍華人楊致遠(Gerry Yang)和 David Filo 共同創(chuàng)辦了 Yahoo 公司,并成功地使搜索引擎的概念深入人心。到 1993 年底,一些基于此原理的搜索引擎開始紛紛涌現(xiàn),但是早期的搜索引擎只是以搜索工具在數(shù)據(jù)庫中找到匹配信息的先后次序排列搜索結果,因此毫無信息關聯(lián)度可言。與 Wanderer 相對應,Martin Kosher 于 1993 年 10 月創(chuàng)建了ALIWEB,它是 Archie 的 HTTP 版本。計算機“機器人” (Computer Robot)是指某個能以人類無法達到的速度不間斷地執(zhí)行某項任務的軟件程序。由于 Archie 深受歡迎,受其啟發(fā),Nevada System Computing Services 大學于 1993 年開發(fā)了一個 Gopher(Gopher FAQ)搜索工具Veronica(Veronica FAQ) 。所有搜索引擎的鼻祖,是 1990 年由 Montreal 的 McGill University 三名學生(Alan Emtage、Peter Deutsch、Bill Wheelan)發(fā)明的 Archie(Archie FAQ) 。;Socket programming?!娟P鍵詞】 網(wǎng)絡爬蟲; SOCKET 編程;TCP/IP;網(wǎng)絡編程 ;JAVA沈陽理工大學學士學位論文II AbstractInstant message software in our daily lives has a very wide range of application , However ,most of the software must be used in the Inter , and it must be used in a Inter environment .Sometimes Internal staff, students ,may not have the Inter environment or other reasons do not wish to be able to municate on the Inter .This development will have a need for LAN munication program .Therefore ,this paper presents the needs of local area work exchange information Software ,And details of the work protocol TCP/IP protocol suite are introduced and research such as TCP, UDP, broadcast ,and other technologies . and work information exchange theory is discussed . Base on this condition I use of Socket Network programming based on Windows platform to develop a LAN chat application . SPIDER is a program which can auto collect informations from inter. SPIDER can collect data for search engines, also can be a Directional information collector, collects specifically informations from some web sites, such as HR informations, house rent informations.In this paper, use JAVA implements a breadthfirst algorithm multithread SPDIER. This paper expatiates some major problems of SPIDER: why to use multithreading, and how to implement multithread。本文通過 JAVA 實現(xiàn)了一個基于廣度優(yōu)先算法的多線程爬蟲程序。本文提出了局域網(wǎng)信息交互的需求,并詳細對網(wǎng)絡協(xié)議 TCP/IP 協(xié)議族進行了介紹和研究,如 TCP,UDP,廣播等相關技術。有時候單位內(nèi)部的員工,同學,在沒有互聯(lián)網(wǎng)環(huán)境下或因其他原因希望不用 INTERNET 就可以進行信息交互,這樣開發(fā)局域網(wǎng)通信就有了必要性。通過網(wǎng)絡爬蟲不僅能夠為搜索引擎采集網(wǎng)絡信息,而且可以作為定向信息采集器,定向采集某些網(wǎng)站下的特定信息,如招聘信息,租房信息等。將解析的網(wǎng)頁存入 XML