freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于java的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分(最終版)-文庫(kù)吧

2025-05-17 15:21 本頁(yè)面


【正文】 具有開(kāi)放性,其獨(dú)立于特定的計(jì)算機(jī)硬件及操作系統(tǒng),可以免費(fèi)使用。統(tǒng)一分配網(wǎng)絡(luò)地址,使得每個(gè) TCP/IP 設(shè)備在網(wǎng)絡(luò)中都具有唯一的 IP 地址。實(shí)現(xiàn)了高層協(xié)議的標(biāo)準(zhǔn)化,能為用戶提供多種可靠的服務(wù)。 (2)TCP/IP 協(xié)議進(jìn)行傳輸數(shù)據(jù)傳輸 的過(guò)程: 應(yīng)用程序?yàn)榱藗鬏敂?shù)據(jù)會(huì)調(diào)用 TCP,將數(shù)據(jù)和對(duì)應(yīng)的參數(shù)傳給 TCP,將 TCP 數(shù)據(jù)包封裝在 IP 包內(nèi),通過(guò)網(wǎng)絡(luò)送給目的 TCP。接收方 TCP 在接收到數(shù)據(jù)后通知上層應(yīng)用程序, TCP 將保證接收數(shù)據(jù)的正確性。在實(shí)現(xiàn) TCP 的主機(jī)上, TCP 可以被看成是一個(gè)模塊,和文件系統(tǒng)區(qū)別不大, TCP 也可以調(diào)用一些操作系統(tǒng)的功能, TCP 不直接和網(wǎng)絡(luò)打交道,控制網(wǎng)絡(luò)的任務(wù)由專門(mén)的設(shè)備驅(qū)動(dòng)模塊完成。 TCP 只是調(diào)用 IP 接口,向 TCP 提供所有 TCP 需要的服務(wù)。 (3)端口號(hào): 有的時(shí)候,一個(gè) ip 地址不能完整的標(biāo)識(shí)一臺(tái) 服務(wù)器,這是應(yīng)為一臺(tái)物理性的計(jì)算機(jī)同時(shí)運(yùn)行著多個(gè)應(yīng)用程序,這就需要我們來(lái)區(qū)別同一臺(tái)機(jī)子上的不同的服務(wù),所以就在傳輸層和應(yīng)用層上設(shè)置接口,就是 端口。端口實(shí)際是一個(gè) 16 位長(zhǎng)的 地址,他的范圍是 0~ 65535 之間,其中 0~ 1023 是熟知端口,主要是給提供服務(wù)的應(yīng)用程序使用,這些端口是所有應(yīng)用進(jìn)程都只道的, 1024~ 65535 為一般端口,也稱動(dòng)態(tài)端口、連接端口,用來(lái)隨時(shí)分配要求通信的各個(gè)客戶端應(yīng)用程序。在數(shù)據(jù)傳輸過(guò)程中,服務(wù)器不斷的檢測(cè)分配給他的端口,發(fā)現(xiàn)要求和他通信的客戶端。(參考文獻(xiàn) [2][4]) Socket 的簡(jiǎn)介 Socket,簡(jiǎn)稱套接字,用于實(shí)現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接。也就是說(shuō)網(wǎng)絡(luò)上兩個(gè)或兩個(gè)以上雙工方式通信的進(jìn)程之間總有一個(gè)連接,這個(gè)連接的端點(diǎn)成為套接字,套接字是在比較低的層次上通信的。 具體的說(shuō):一個(gè)服務(wù)器應(yīng)用程序一般偵聽(tīng)一個(gè)特定的端口等待客戶端的連接請(qǐng)求,當(dāng)一個(gè)連接請(qǐng)求到達(dá)時(shí),客戶端和服務(wù)器端建立一個(gè)通信連接,在連接過(guò)程中,客戶端被分配一個(gè)本地端口與一個(gè) socket 建立連接,客戶端通過(guò)寫(xiě) socket 來(lái)通知服務(wù)器,以讀 socket 中的信息,類(lèi)似的服務(wù)器也獲得一個(gè)本地端 口,它需要一個(gè)新的端口號(hào)來(lái)偵聽(tīng)原始端口上的其他連接請(qǐng)求。服務(wù)器也通過(guò)它的本地端口連接一個(gè)socket,通過(guò)讀寫(xiě)和客戶端通信。 Socket 程序的工作過(guò)程: 建立 Socket 連接:在通信開(kāi)始之前由通信雙方確認(rèn)身份,建立一條專用的虛擬連接通道。 數(shù)據(jù)通信:利用虛擬連接通道傳送數(shù)據(jù)信息進(jìn)行通道。 關(guān)閉:通信結(jié)束時(shí),再將所建的虛擬連接拆除。 具體如下: 服務(wù)器 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 7 (圖 網(wǎng)絡(luò) socket 主要流程圖) 三次握手: 第一次握手:原主機(jī)發(fā)送一個(gè)帶有本次連接的序號(hào)的請(qǐng)求的一個(gè)數(shù)據(jù)幀 第二次握手:目 的主機(jī)收到請(qǐng)求后,如果同意連接,則發(fā)回一個(gè)帶有一個(gè)本次連接序號(hào)和源端機(jī)連接序列號(hào)的確認(rèn)。 第三此握手:源端機(jī)收到含有兩次初始序列號(hào)的應(yīng)答后,在向目的主機(jī)發(fā)送一個(gè)帶有兩次連接的序列號(hào)的確認(rèn)。 具體過(guò)程如下 (圖 三次握手的流程) 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 8 網(wǎng)絡(luò)編程在 JAVA 上的實(shí)現(xiàn) .1 Java 網(wǎng)絡(luò)應(yīng)用模型 和 Inter 上的許多環(huán)境一樣,完整的 Java 應(yīng)用環(huán)境實(shí)際上也是一個(gè)客戶機(jī) /服務(wù)器環(huán)境,更確切地說(shuō)是瀏覽器 /服務(wù)器模型(即 Browser/Server 模型,簡(jiǎn)稱 Web模型)。但與傳統(tǒng)的客戶機(jī) /服務(wù) 器 (C/S) 的二層結(jié)構(gòu)不同,應(yīng)用 Java 的 Web 模型是由三層結(jié)構(gòu)組成的。傳統(tǒng)的 C/S 結(jié)構(gòu)通過(guò)消息傳遞機(jī)制,由客戶端發(fā)出請(qǐng)求給服務(wù)器,服務(wù)器進(jìn)行相應(yīng)處理后經(jīng)傳遞機(jī)制送回客戶端。而在 Web 模型中,服務(wù)器一端被分解成兩部分:一部分是應(yīng)用服務(wù)器 (Web 服務(wù)器 ),另一部分是數(shù)據(jù)庫(kù)服務(wù)器。 針對(duì)分布式計(jì)算環(huán)境, Java 通過(guò)其網(wǎng)絡(luò)類(lèi)庫(kù)提供了良好的支持。對(duì)數(shù)據(jù)分布,Java 提供了一個(gè) URL(Uniform Resource Locator) 對(duì)象, 利用此對(duì)象可打開(kāi)并訪問(wèn)網(wǎng)絡(luò)上的對(duì)象,其訪問(wèn)方式與訪問(wèn)本地文件系統(tǒng) 幾乎完全相同。對(duì)操作分布, Java的客戶機(jī) / 服務(wù)器模式可以把運(yùn)算從服務(wù)器分散到客戶一端(服務(wù)器負(fù)責(zé)提供查詢結(jié)果,客戶機(jī)負(fù)責(zé)組織結(jié)果的顯示),從而提高整個(gè)系統(tǒng)的執(zhí)行效率,增加動(dòng)態(tài)可擴(kuò)充性。 Java 網(wǎng)絡(luò)類(lèi)庫(kù)是 Java 語(yǔ)言為適應(yīng) Inter 環(huán)境而進(jìn)行的擴(kuò)展。另外,為適應(yīng)Inter 的不斷發(fā)展, Java 還提供了動(dòng)態(tài)擴(kuò)充協(xié)議,以不斷擴(kuò)充 Java 網(wǎng)絡(luò)類(lèi)庫(kù)。 Java 的網(wǎng)絡(luò)類(lèi)庫(kù)支持多種 Inter 協(xié)議,包括 Tel, FTP 和 HTTP (WWW),與此相對(duì)應(yīng)的 Java 網(wǎng)絡(luò)類(lèi)庫(kù)的子類(lèi)庫(kù)為: 這些子類(lèi)庫(kù)各自容納了可用于處理 Inter 協(xié)議的類(lèi)和方法。其中, 用于處理一些基本的網(wǎng)絡(luò)功能,包括遠(yuǎn)程登錄 (Tel); 用于處理 ftp協(xié)議; 用于處理 WWW 頁(yè)面內(nèi)容; 和 則分別提供了對(duì) HTML 語(yǔ)言和 HTTP 協(xié)議的支持。 .2 客戶機(jī) /服務(wù)器環(huán)境下的 Java 應(yīng)用程序 客戶機(jī) /服務(wù)器在分布處理過(guò)程中,使用基于連接的網(wǎng)絡(luò)通信模式。該通信模式首先在客戶機(jī)和服務(wù)器之間定義一套通信協(xié)議,并創(chuàng)建一 Socket 類(lèi),利用這個(gè)類(lèi)建立一條可靠的鏈接;然后,客戶機(jī) /服務(wù)器再在這條鏈接上可靠地傳輸數(shù)據(jù)??蛻魴C(jī)發(fā)出請(qǐng)求,服務(wù)器監(jiān)聽(tīng)來(lái)自客戶機(jī)的請(qǐng)求,并為客戶機(jī)提供響應(yīng)服務(wù)。這就是典型的請(qǐng)求 應(yīng)答 模式。下面是客戶機(jī) /服務(wù)器的一個(gè)典型運(yùn)作過(guò)程: 服 務(wù)器監(jiān)聽(tīng)相應(yīng)端口的輸入; 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 9 客戶機(jī)發(fā)出一個(gè)請(qǐng)求; 服務(wù)器接收到此請(qǐng)求; 服務(wù)器處理這個(gè)請(qǐng)求,并把結(jié)果返回給客戶機(jī); 重復(fù)上述過(guò)程,直至完成一次會(huì)話過(guò)程。 按照以上過(guò)程,我們使用 Java 語(yǔ)言編寫(xiě)一個(gè)分別針對(duì)服務(wù)器和客戶機(jī)的應(yīng)用程序( Application)。該程序在服務(wù)器上時(shí),程序負(fù)責(zé)監(jiān)聽(tīng)客戶機(jī)請(qǐng)求,為每個(gè)客戶機(jī)請(qǐng)求建立 Socket 連接,從而為客戶機(jī)提供服務(wù)。本程序提供的服務(wù)為:讀取來(lái)自客戶機(jī)的一行文本,反轉(zhuǎn)該文本,并把它發(fā)回給客戶機(jī)。 通過(guò)該程序?qū)嵗覀兛吹?,使用 Java 語(yǔ)言設(shè)計(jì) C/S 程序時(shí)需要注意以下幾點(diǎn): ( 1)、 服務(wù)器應(yīng)使用 ServerSocket 類(lèi)來(lái)處理客戶機(jī)的連接請(qǐng)求。當(dāng)客戶機(jī)連接到服務(wù)器所監(jiān)聽(tīng)的端口時(shí), ServerSocket 將分配一新的 Socket 對(duì)象。這個(gè)新的Socket 對(duì)象將連接到一些新端口,負(fù)責(zé)處理與之相對(duì)應(yīng)客戶機(jī)的通信。然后,服務(wù)器繼續(xù)監(jiān)聽(tīng) ServerSocket,處理新的客戶機(jī)連接。 Socket 和 ServerSocket 是 Java網(wǎng)絡(luò)類(lèi)庫(kù)提供的兩個(gè)類(lèi)。 ( 2)、服務(wù)器使用了多線程機(jī)制。 Server 對(duì)象本身就是一個(gè) 線程,它的 run()方法是一個(gè)無(wú)限循環(huán),用以監(jiān)聽(tīng)來(lái)自客戶機(jī)的連接。每當(dāng)有一個(gè)新的客戶機(jī)連接時(shí),ServerSocket 就會(huì)創(chuàng)建一個(gè)新的 Socket 類(lèi)實(shí)例,同時(shí)服務(wù)器也將創(chuàng)建一新線程,即一個(gè) Connection 對(duì)象,以處理基于 Socket 的通信。與客戶機(jī)的所有通信均由這個(gè)Connection 對(duì)象處理。 Connection 的構(gòu)造函數(shù)將初始化基于 Socket 對(duì)象的通信流,并啟動(dòng)線程的運(yùn)行。與客戶機(jī) 的通信以及服務(wù)的提供,均由 Connection 對(duì)象處理。 ( 3)、客戶機(jī)首先創(chuàng)建一個(gè) Socket 對(duì)象, 用以與服務(wù)器通信。之后需創(chuàng)建兩個(gè)對(duì)象: DataInputStream 和 DataOutputStream,前者用以從 Socket 的 InputStream 輸入流中讀取數(shù)據(jù),后者則用于往 Socket 的 OutputStream 中寫(xiě)數(shù)據(jù)。最后,客戶機(jī)程序從標(biāo)準(zhǔn)輸入(如:控制臺(tái))中讀取數(shù)據(jù),并把這些數(shù)據(jù)寫(xiě)到服務(wù)器,在從服務(wù)器讀取應(yīng)答消息,然后把這些應(yīng)答消息寫(xiě)到準(zhǔn)輸出。 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 10 第二章 java 網(wǎng)絡(luò)安全聊天系統(tǒng)設(shè)計(jì) 根據(jù)當(dāng)前網(wǎng)絡(luò)的需求,網(wǎng)絡(luò)聊天越來(lái)越受各種網(wǎng)民所青睞。越來(lái) 越多的人使用,同時(shí)也越來(lái)越多的人對(duì)于 聊天的安全性擔(dān)憂,各種各樣的 病毒, 木馬,以及未加密的明文傳送,讓我們的網(wǎng)絡(luò)聊天環(huán)境越來(lái)越不安全。因此我決定以 基于java 的網(wǎng)絡(luò)安全聊天工具 作為檢驗(yàn)我 4年學(xué)習(xí)的課題。 聊天系統(tǒng)的設(shè)計(jì)步驟及功能模塊劃分 聊天系統(tǒng)工作原理圖 (圖 服務(wù)器和客戶端之間關(guān)系 ) 2 .3 聊天系統(tǒng)各功能模塊 ( 1)服務(wù)器程序模塊 服務(wù)器與客戶間通過(guò)套接口 Socket(TCP)連接。在 java 中使用套接口相當(dāng)簡(jiǎn)單,Java API 為處理套接口的通 信提供了一個(gè)類(lèi) ,使得編寫(xiě)網(wǎng)絡(luò)應(yīng)用程序相對(duì)容易。服務(wù)器采用多線程以滿足多用戶的請(qǐng)求,并通過(guò)創(chuàng)建一個(gè) ServerSocket對(duì)象來(lái)監(jiān)聽(tīng)來(lái)自客戶的連接請(qǐng)求,默認(rèn)端口為 6868,然后無(wú)限循環(huán)調(diào)用 accept()方法接受客戶程序的連接。 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 11 ( 2)客戶程序模塊 客戶通過(guò) Socket(IAddress,port)建立與服務(wù)器的連接。服務(wù)器與客戶都通過(guò)構(gòu)造 ObjectInputStream,ObjectOutputStream 來(lái)建立輸入輸出流,然后雙方通過(guò)該輸入輸出流來(lái)相互傳遞信息 ,一旦收到客戶方的連接請(qǐng)求,服務(wù)器 accept()方法返回一個(gè)新建的 Socket 對(duì)象??蛻舳巳缓笙蚍?wù)器發(fā)送消息,比如文件傳輸?shù)龋?wù)器收到來(lái)自客戶的請(qǐng)求后,針對(duì)不同的消息處理請(qǐng)求。 需求分析 聊天系統(tǒng)不外乎兩個(gè)方面,服務(wù)器端和客戶端。簡(jiǎn)單分析一下兩個(gè)方面所要完成的任務(wù),對(duì)設(shè)計(jì)這個(gè)程序來(lái)說(shuō),等于完成了一半。首先來(lái)看一下服務(wù)器端的任務(wù): 1.服務(wù)器端應(yīng)當(dāng)建立一個(gè) ServerSocket,并且不斷進(jìn)行偵聽(tīng)是否有客戶端連接或者斷開(kāi)連接 (包括判斷沒(méi)有響應(yīng)的連接超時(shí) )。 2.服務(wù)器端應(yīng)當(dāng) 是一個(gè)信息發(fā)送中心,所有客戶端的信息都傳到服務(wù)器端,由服務(wù)器端根據(jù)要求分發(fā)信息。 3. 服務(wù)器應(yīng)當(dāng)建立一個(gè)用戶賬號(hào)的數(shù)據(jù)庫(kù),用于管理用戶資料。 4. 服務(wù)器應(yīng)當(dāng)能存有所有用戶的公鑰,以及所有加密過(guò)后的聊天記錄,當(dāng)用戶需要時(shí)便于驗(yàn)證信息內(nèi)容。 (圖 服務(wù)器的主要功能圖 ) 如上圖就是服務(wù)器端最主要的幾個(gè)任務(wù)。不難看出,服務(wù)器端的任務(wù)并不復(fù)雜。 客戶端應(yīng)該完成的工作包括: 1.與服務(wù)器端建立通信通道,向服務(wù)器端發(fā)送信息。(包過(guò)用戶資料注冊(cè)、用戶登錄、群聊、用戶間私聊等 各種消息) 2.接收來(lái)自服務(wù)器的信息。根據(jù)消息的內(nèi)容進(jìn)行操作,如抬出各種對(duì)話框、確認(rèn)信息等。 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 12 (圖 客戶端的主要功能圖 ) 相對(duì)服務(wù)器而言,客戶端的任務(wù)更加簡(jiǎn)單,有了以上的簡(jiǎn)單分析,可以知道,解決上述幾個(gè)個(gè)問(wèn)題,即完成了該聊天系統(tǒng)的核心。 聊天系統(tǒng)的總體設(shè)計(jì)要點(diǎn) 聊天系統(tǒng)的設(shè)計(jì)跟普通軟件設(shè)計(jì)有著許多不同的地方,普通軟件設(shè)計(jì)所考慮的因素,例如,普通軟件需要對(duì)布局進(jìn)入大量美化以及優(yōu)化設(shè)計(jì)等等,而聊天工具只要提供滿足用戶直接實(shí)時(shí)聊天即可。因此,在設(shè)計(jì)聊天系統(tǒng)的過(guò)程中,必須要考慮 好以下幾個(gè)設(shè)計(jì)要點(diǎn): 實(shí)現(xiàn)思想 在 Inter 上的聊天程序一般都是以服務(wù)器提供服務(wù)端連接響應(yīng),使用者通過(guò)客戶端程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個(gè)面向連接的通信過(guò)程。因此,程序要在 TCP/IP 環(huán)境下,實(shí)現(xiàn)服務(wù)器端和客戶端兩部分程序。 服務(wù)器端工作流程 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 13 (圖 服務(wù)器主要運(yùn)行流程圖 ) (圖 服務(wù)器的界面功能圖 ) 1. 服務(wù)器先創(chuàng)建一個(gè) client 數(shù)組,用來(lái)存放 id、連接用戶的名字、地址等,每個(gè)用戶對(duì)應(yīng)一個(gè) client 線程。同時(shí)連接用戶數(shù)據(jù)庫(kù) 。 2. 對(duì)服務(wù)器本地端口(程序里默認(rèn)是 6868)進(jìn)行監(jiān)聽(tīng),當(dāng)收到客戶連接請(qǐng)求后,接收用戶發(fā)來(lái)的信息,這里將消息進(jìn)行分段后進(jìn)行 2種不同操作。第一種是注冊(cè)請(qǐng)求,繼續(xù)接受用戶名、密碼等信息,然后查詢數(shù)據(jù)庫(kù),判斷是否已經(jīng)注冊(cè),未注 基于 java 的網(wǎng)絡(luò)安全聊天工具:網(wǎng)絡(luò)功能部分 14 冊(cè)則插入用戶信息,返回成功信息給客戶端。已注冊(cè)則返回失敗消息
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1