




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、畢業(yè)設計論文題目名稱:報 告 人:專業(yè)班級:指導教師: 文件傳輸與文字聊天工具 摘 要隨著計算機科學和Internet 的飛速發(fā)展, 網(wǎng)上聊天已成為人們相互交流的一種方式, 與E-mail、 相比, 聊天服務更具有實時性和有效性。 本論文提出一個運行于Elcipse 平臺上的局域網(wǎng)聊天軟件的解決方案。該聊天軟件包括服務器端和客戶端兩個模塊,客戶端通過服務器端進行通信。服務器端模塊主要實現(xiàn)了服務器的配置和數(shù)據(jù)的傳遞;客戶端模塊主要實現(xiàn)了用戶注冊、登錄、文字聊天,文件傳輸?shù)裙δ堋T撥浖捎枚嗑€程技術(shù)支持多用戶操作,并采用相關(guān)技術(shù)進行了優(yōu)化,加快了文字傳遞速度。 該軟件能夠幫助企業(yè)在局域網(wǎng)內(nèi)搭建起自
2、己的聊天系統(tǒng),避免企業(yè)內(nèi)部員工使用類似QQ 等軟件泄露內(nèi)部信息,但是該軟件只實現(xiàn)了聊天的基本功能,還有很多不足之處需要改進。關(guān)鍵詞c/s Socket; Java; GUI;數(shù)據(jù)庫 Abstract Along with the high-speed development of the computer science and Internet, chatting on line has been an important method in our communication. Comparing with E-mail and telephone, the chat-line servi
3、ce is more real-time and effective. This thesis proposes a solution of a LAN chatting software based on JAVA language, which is operated on the Eclipse platform. This chatting software includes two modules: the server and the client, which can communicate with each other. The server module mainly co
4、mpletes the sever devices configuration. The client module mainly completes the users login, registration, instant messaging,F(xiàn)ile transfer and so on. This software uses the multithreading technical support multi-users operation, and uses the correlation technique to carry on the optimization to spee
5、d up the writing transmission speed. This software can help the company to build their own chatting system in the local area network, and it also can avoid the staff of the company disclosing the insider information by using the other software such as QQ, but this software has only completed the bas
6、ic function as a chatting system, so it need much more improvement. Keywords c/s Socket; Java; GUI;database目錄 引 言隨著電腦和互聯(lián)網(wǎng)的普及,網(wǎng)絡聊天已經(jīng)成為人們工作生活中傳遞信息、交流感情的重要工具。網(wǎng)絡版的聊天軟件種類繁多,如QQ、OICQ、MSN 等,實現(xiàn)了隨時隨地上網(wǎng)聊天,給人們帶來了很大的方便。但是這些聊天軟件也存在以下不足:用戶必須連接Internet;用戶再工作時容易沉迷于網(wǎng)絡聊天。為了方便單位企業(yè)內(nèi)部的信息交流,減少不必要的財力和人力資源浪費,開發(fā)一個局域網(wǎng)聊
7、天軟件是非常必要的。 現(xiàn)在,多渠道的信息源、網(wǎng)絡化的數(shù)據(jù)分布、快捷醫(yī)用的交互操作、智能化的分析決策等特點越來越成為衡量有兩聊天軟件的關(guān)鍵,因此,本人開發(fā)一個局域網(wǎng)聊天軟件,該聊天軟件是基于JAVA語言運行于Eclipse平臺上,利用的技術(shù)主要是Socket通信和多線程技術(shù),使用MySQL 2005作為后臺數(shù)據(jù)庫管理。為實現(xiàn)和方便客戶端間通信,在客戶端進行了人性化的界面設計,用戶可以注冊號碼,設置個人資料,實現(xiàn)雙向聊天功能,可以指定好友查找以及模糊條件搜索添加好友并具文件傳輸?shù)裙δ?。該工具采用JAVA技術(shù)配合Eclipse軟件實現(xiàn)。主要利用了JAVA的簡單高效,面向?qū)ο?,支持多線程,與操作系統(tǒng)和
8、運行的平臺環(huán)境無關(guān)性等特點。以及eclipse軟件的簡單易學,操作方便的特性。同時也由于這個開發(fā)使用的主要工具基本上都是免費的。不需要多大的經(jīng)濟負擔。 該聊天工具主要解決了兩方面的問題。服務器端和客戶端。在服務器端可以實現(xiàn)如下功能:能夠處理用戶的注冊;通過身份驗證方式處理用戶登錄;可以向所有在線用戶廣播信息;刪除長久不使用的用戶信息;配有操作文檔;及時接收用戶的服務請求幫助。在客戶端可以實現(xiàn)如下功能:聊天信息的傳輸,支持私聊;文件的傳輸和接收等功能。標準Java包中提供了相當完善的針對網(wǎng)絡通信和I/O相關(guān)操作的類庫,利用這些類,可以設計出一個網(wǎng)絡交互工具。socket編程讓程序員幾乎不用了解任
9、何網(wǎng)絡通信協(xié)議,就可以編寫出強大的網(wǎng)絡系統(tǒng)。要建立一個Server-Client結(jié)構(gòu)的聊天系統(tǒng),也非難事。善加利用socket以及多線程編程,就能實現(xiàn)這個工具的設計。 第一章概述1.1 課題背景及意義 本設計的開發(fā)采用C/S結(jié)構(gòu),在基于java開發(fā)環(huán)境下,使用java編程語言進行開發(fā)。本文首先論述國內(nèi)外聊天工具的發(fā)展情況和現(xiàn)今的發(fā)展方向,并對開發(fā)環(huán)境和開發(fā)語言進行了簡單介紹;對本設計所要開發(fā)的多功能聊天軟件作了較為全面的需求分析,并給出了多功能聊天軟件的設計方案。為實現(xiàn)網(wǎng)絡聊天的功能,采用 Windows Socket 編程,在設計聊天方案時,實行將所有信息發(fā)往服務器端,再由服務器進行分別處理
10、的思路,服務器端是所有信息的中心。由于服務器端要保存用戶信息,我們利用數(shù)據(jù)庫來實現(xiàn)這一功能,因此首先需要建立用戶信息數(shù)據(jù)庫。 在客戶端保存聊天紀錄和用戶號碼這一功能的實現(xiàn)中,采用了文件系統(tǒng)設計。 在信息到來及好友上線時,通過閃動托盤圖標和播放不同的音樂進行提示。建立消息鏈表來保存用戶接收的各種消息。主要功能包括文字聊天、文件傳輸天等;本畢業(yè)設計主要實現(xiàn)的是多功能聊天軟件的部分功能,即文字聊天、文件傳輸?shù)裙δ?,主要完成的任務包括服務器模塊的設計、數(shù)據(jù)庫的設計、添加好友、文字聊天和文件傳輸?shù)裙δ?。,?gòu)成一個實用的、功能完善的聊天軟件,達到預期目標;通過運行、測試與分析,該多功能聊天軟件運行穩(wěn)定、可
11、靠,具有一定的實用價值。該論文針對課題背景對國內(nèi)發(fā)展現(xiàn)狀進行解析,并且闡述了本設計的研究意義,進行了設計的具體分析,聊天工具流程的分析與設計,數(shù)據(jù)庫模塊的分析與設計,文字聊天以及文件傳輸模塊的分析與具體實現(xiàn)。添加好友、服務器以及其它特殊功能模塊實現(xiàn)分析。1.2 課題內(nèi)容與目標結(jié)合自己在大學階段所學的知識和參與實驗經(jīng)驗,研究設計了基于java技術(shù)的文件傳輸與文字聊天工具. 聊天工具分為服務器端和客戶端兩大模塊。下圖為軟件功能模塊圖: 設計目標: 聊天工具分為服務器端和客戶端,以及圖形化界面。簡單分析服務器端和客戶端所要完成的任務。(1)服務器端應當建立一個ServerSocket,并且不斷進行偵
12、聽是否有客戶端連接或者斷開連接(包括判斷沒有響應的連接超時)。(2)服務器端應當是一個信息發(fā)送中心,所有客戶端的信息都傳到服務器端,由服務器端根據(jù)要求分發(fā)信息。(3)客戶端與服務器端建立通信通道,向服務器端發(fā)送信息。(4)客戶端接收來自服務器的信息。主要研究開發(fā)內(nèi)容是:熟悉 java和 MySQL 2005 服務器的配置,搭配系統(tǒng)開發(fā)平臺,探索在此開發(fā)平臺下,利用 socket 編程技術(shù)、多線程開發(fā)技術(shù)、TCP、UDP 協(xié)議等進行局域網(wǎng)聊天軟件的實際開發(fā)。 第二章開發(fā)環(huán)境及技術(shù)處理器:Inter Pentium PIII或更高處理器內(nèi)存:512M以上網(wǎng)絡:局域網(wǎng)開發(fā)系統(tǒng)應盡可能采用高檔的硬件,
13、因此在應用時應采用更好的配置。操作系統(tǒng):windows XP開發(fā)語言:JAVA后臺數(shù)據(jù)庫開發(fā):MySQL 2005Eclipse介紹eclipse-galileoEclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。 Eclipse最初是由IBM公司開發(fā)的替代商業(yè)軟件Visual Age for Java的下一代IDE開發(fā)環(huán)境,2001年11月貢獻給開源社區(qū),現(xiàn)在它由非營利軟件供
14、應商聯(lián)盟Eclipse基金會(Eclipse Foundation)管理。 2003年,Eclipse 3.0選擇OSGi服務平臺規(guī)范為運行時架構(gòu)。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號為Ganymede的3.4版。2009年7月發(fā)布代號為GALILEO的3.5版。 Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開發(fā),但是目前亦有人通過插件使其作為其他計算機語言比如C+和Python的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Ecl
15、ipse為框架開發(fā)自己的IDE。 Eclipse 最初由OTI和IBM兩家公司的IDE產(chǎn)品開發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎,包括Platform、JDT 和PDE。目前由IBM牽頭,圍繞著Eclipse項目已經(jīng)發(fā)展成為了一個龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一個開發(fā)源碼項目,它其實是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其開放源碼
16、,任何人都可以免費得到,并可以在此基礎上開發(fā)各自的插件,因此越來越受人們關(guān)注。近期還有包括Oracle在內(nèi)的許多大公司也紛紛加入了該項目,并宣稱Eclipse將來能成為可進行任何語言開發(fā)的IDE集大成者,使用者只需下載各種語言的插件即可。 雖然大多數(shù)用戶很樂于將 Eclipse 當作 Java IDE 來使用,但 Eclipse 的目標不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中
17、的每樣東西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。 基于 Eclipse 的應用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它構(gòu)成了 IBM Java 開發(fā)工具系列的基礎。例如,WebSphere Studio Application Developer 添加了對 JSP、servlet、EJB、XML、Web 服務和數(shù)據(jù)庫訪問的支持。關(guān)鍵技術(shù)2.2.1 JAVA介紹Java是一種簡單的,面向?qū)ο蟮?,分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異的動態(tài)語
18、言。 Java語言的語法與C語言和C+語言很接近,使得大多數(shù)程序員很容易學習和使用Java。另一方面,Java丟棄了C+ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動的廢料收集,使得程序員不必為內(nèi)存管理而擔憂。 Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機制。Java語言全面支持動態(tài)綁定,而C+ 語言只對虛函數(shù)使用動態(tài)綁定??傊?,Java語言是一個純的面向?qū)ο蟪绦蛟O計語言。 Java語言支持Internet應用的開發(fā),在基本的J
19、ava應用編程接口中有一個網(wǎng)絡應用編程接口,它提供了用于網(wǎng)絡應用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠程方法激活)機制也是開發(fā)分布式應用的重要手段。 Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。 Java通常被用在網(wǎng)絡環(huán)境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網(wǎng)絡下載的類具有一個安全防范機制(類ClassLoader),如分配不同的
20、名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。 Java程序(后綴為java的文件)在Java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件), 然后可以在實現(xiàn)這個Java平臺的任何系統(tǒng)中運行。這種途徑適合于異構(gòu)的網(wǎng)絡環(huán)境和軟件的分發(fā)。 這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴格規(guī)定了各個基本數(shù)據(jù)類型的長度。Java系統(tǒng)本身也具有很強的可移植性,Java編譯器是用Java實現(xiàn)的,Java的運行環(huán)境是用ANSI C實現(xiàn)的。 如前所述,Java程序在Java平臺上被編譯為字節(jié)碼格式, 然后可
21、以在實現(xiàn)這個Java平臺的任何系統(tǒng)中運行。在運行時,Java平臺中的Java解釋器對這些字節(jié)碼進行解釋執(zhí)行,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運行環(huán)境中。 與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來越接近于C+。 在java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable) 的構(gòu)造子將一個實現(xiàn)了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建
22、的對象即為線程。值得注意的是Thread類已經(jīng)實現(xiàn)了Runnable接口,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。 Java語言支持多個線程的同時執(zhí)行,并提供多線程之間的同步機制(關(guān)鍵字為synchronized)。 Java語言的設計目標之一是適應于動態(tài)變化的環(huán)境。Java程序需要的類能夠動態(tài)地被載入到運行環(huán)境,也可以通過網(wǎng)絡來載入所需要的類。這也有利于軟件的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。 Java語言的優(yōu)良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統(tǒng)的維護費用。
23、Java對對象技術(shù)的全面支持和Java平臺內(nèi)嵌的API能縮短應用系統(tǒng)的開發(fā)時間并降低成本。Java的編譯一次,到處可運行的特性使得它能夠提供一個隨處可用的開放結(jié)構(gòu)和在多平臺之間傳遞信息的低成本方式。特別是Java企業(yè)應用編程接口(Java Enterprise APIs)為企業(yè)計算及電子商務應用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫。2.2.2 MySQL介紹 SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是專為數(shù)據(jù)庫而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫語言。在使用它時,只需要發(fā)出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL(Structur
24、ed Query Language,結(jié)構(gòu)化查詢語言)是一個功能強大的數(shù)據(jù)庫語言。SQL通常使用于數(shù)據(jù)庫的通訊。ANSI(美國國家標準學會)聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標準語言。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務,比如在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL Ab公司。在2008年1月16號被Sun公司收購。而2009年,SUN又被Oracle收購.對于Mysql的前途
25、,沒有任何人抱樂觀的態(tài)度.目前MySQL被廣泛地應用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。windows socket網(wǎng)絡編程接口 選定WINDOWS 平臺開發(fā)網(wǎng)絡通信程序,可以選擇WINDOWS 的SOCKETS 編程接口,Windows Sockets 是一套開放的、支持多種協(xié)議的Windows 下的網(wǎng)絡編程接口?,F(xiàn)在的Winsock 已經(jīng)基本上實現(xiàn)了與協(xié)議無關(guān),你可以使用Windows sockets 來調(diào)用多種協(xié)議的功能,但較常使用的是TCP/IP 協(xié)議。
26、Windows sockets 無疑是我們進行網(wǎng)絡編程的利器。所有的Windows Sockets 實現(xiàn)都支持流套接口和數(shù)據(jù)報套接口。應用程序調(diào)用Windows Sockets 的API 實現(xiàn)相互之間的通訊。Windows Sockets 又利用下層的網(wǎng)絡通訊協(xié)議功能和操作系統(tǒng)調(diào)用實現(xiàn)實際的通訊工作。它們之間的關(guān)系如圖2-1所示: 圖2-1 Windows Sockets 實現(xiàn)通訊工作的各層關(guān)系圖2.2.4多線程開發(fā)技術(shù) 多線程在構(gòu)建大型系統(tǒng)的時候是需要重點關(guān)注的一個重要方面,特別是在效率(系統(tǒng)跑得多快?)和性能(系統(tǒng)工作正常?)之間做一個權(quán)衡的時候。恰當?shù)氖褂枚嗑€程可以極大的提高系統(tǒng)性能。使
27、用多線程的好處有以下幾點: ·使用線程可以把占據(jù)長時間的程序中的任務放到后臺去處理;·用戶界面可以更加吸引人,這樣比如用戶點擊了一個按鈕去觸發(fā)某些事件的處理,可以彈 出一個進度條來顯示處理的進度; ·程序的運行速度可能加快; ·在一些等待的任務實現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡收發(fā)數(shù)據(jù)等,線程就比較有用了。 在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。 在本質(zhì)上和結(jié)構(gòu)來說,一般來說,你可以"手動"為長時間運行的任務創(chuàng)建一個新的線程,另外對于短時間運行的任務尤其是經(jīng)常需要開始的那些,進程池是一個非常好的選擇。進程池可以同時運行多
28、個任務,還可以使用框架類。對于資源緊缺需要進行同步的情況來說,它可以限制某一時刻只允許一個線程訪問資源。這種情況可以視為給線程實現(xiàn)了鎖機制。2.2.5TCP/IP協(xié)議、UDP協(xié)議 網(wǎng)際協(xié)議IP 是TCP/IP 的心臟,也是網(wǎng)絡層中最重要的協(xié)議。 IP 層接收由更低層(網(wǎng)絡接口層例如以太網(wǎng)設備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層-TCP 或UDP 層;相反,IP 層也把從TCP 或 UDP 層接收來的數(shù)據(jù)包傳送到更低層。IP 數(shù)據(jù)包是不可靠的,因為 IP 并沒有做任何事情來確認數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP 數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址)和接收它的主機的地址(目的
29、地址)。 如果IP 數(shù)據(jù)包中有已經(jīng)封好的TCP 數(shù)據(jù)包,那么IP 將把它們向上傳送到TCP 層。TCP 將包排序并進行錯誤檢查,同時實現(xiàn)虛電路間的連接。 TCP 數(shù)據(jù)包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。 UDP 與TCP 位于同一層,但對于數(shù)據(jù)包的順序錯誤或重發(fā)。因此,UDP 不被應用于那些使用虛電路的面向連接的服務,UDP 主要用于那些面向查詢 -應答的服務. TCP 和UDP 服務通常有一個客戶/服務器的關(guān)系。兩個系統(tǒng)間的多重連接是這樣相互確認并協(xié)調(diào)一致的,TCP 或UDP 連接唯一地使用每個信息中的如下四項進行確認: 源IP 地址 發(fā)送包的IP 地
30、址。 目的IP 地址 接收包的IP 地址。 源端口 源系統(tǒng)上的連接的端口。 目的端口 目的系統(tǒng)上的連接的端口。 端口是一個軟件結(jié)構(gòu),被客戶程序或服務進程用來發(fā)送和接收信息。一個端口對應一個16 比特的數(shù)。服務進程通常使用一個固定的端口,例如, SMTP 使用25。這些端口號是“廣為人知”的,因為在建立與特定的主機或服務的連接時,需要這些地址和目的地址進行通訊。Client/Server結(jié)構(gòu) Client/Server 結(jié)構(gòu)(C/S 結(jié)構(gòu))是大家熟知的客戶機和服務器結(jié)構(gòu)。通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client 端和 Server 端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大
31、多數(shù)應用軟件系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu)。 C/S 結(jié)構(gòu)軟件分為客戶機和服務器兩層,客戶機不是毫無運算能力的輸入、輸出設備,而是具有了一定的數(shù)據(jù)處理和數(shù)據(jù)存儲能力,通過把應用軟件的計算和數(shù)據(jù)合理地分配在客戶機和服務器兩端,可以有效地降低網(wǎng)絡通信量和服務器運算量。由于服務器連接個數(shù)和數(shù)據(jù)通信量的限制,這種結(jié)構(gòu)的軟件適于在用戶數(shù)目不多的局域網(wǎng)內(nèi)使用。 C/S 結(jié)構(gòu)的優(yōu)點是能充分發(fā)揮客戶端的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優(yōu)點就是客戶端響應速度快。 缺點主要有以下幾個: 只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動辦公和分布式辦公越來越普及,這需要我
32、們的系統(tǒng)具有擴展性。這種方式遠程訪問需要專門的技術(shù),同時要對系統(tǒng)進行專門的設計來處理分布式的數(shù)據(jù)。 第三章 系統(tǒng)分析與設計 聊天交流是目前互聯(lián)網(wǎng)提供的主要內(nèi)容。聊天系統(tǒng)有多種實現(xiàn)方式,類似ICQ 屬于一種點對點的聊天系統(tǒng);還有一種是基于Socket 的集中式聊天系統(tǒng),這種聊天系統(tǒng)需要登錄統(tǒng)一的聊天服務器。 在基于Socket 的聊天系統(tǒng)中,主要有兩種角色:服務器和客戶端,不同的客戶端登錄集中式的服務器,通過服務器將一個客戶端發(fā)出的信息推送到其他所有客戶端。 基于Socket 的聊天系統(tǒng)最早實現(xiàn)是使用網(wǎng)頁刷新方式,通過客戶端不斷地自動刷新,將服務器端整個頁面內(nèi)容下載到客戶端顯示,這種方式的聊天速
33、度慢,而且有刷屏現(xiàn)象,很快被更新的聊天技術(shù)所替代。 聊天系統(tǒng)在客戶端和服務器之間主要傳送的是文字信息,服務器端只需要把最近的文字信息推送到客戶端,這樣減少了網(wǎng)絡傳輸內(nèi)容,節(jié)省了網(wǎng)絡傳輸?shù)臅r間,無疑提高了聊天速度。這種“推”技術(shù)是目前基于Socket 聊天系統(tǒng)的主要實現(xiàn)技術(shù)。 在基于Socket 的聊天系統(tǒng),客戶端和服務器必須保持隨時隨地的連接。這有別于普通 Web 瀏覽的連接方式。在使用瀏覽器訪問服務器時,先由客戶端發(fā)出HTTP 協(xié)議,然后服務器響應處理這個客戶端的響應,再返回處理結(jié)果;請求(Request)和響應(Response)是一種一對一的前后因果關(guān)系。 而在基于Socket 的聊天系
34、統(tǒng)中,客戶端發(fā)出聊天信息的同時,客戶端也在接受服務器發(fā)送過來的其他人的聊天信息,因此,請求和響應不存在那種前后對應關(guān)系,是兩種分別獨立進行的進程。因為服務器任何時候都可能發(fā)送信息到客戶端,因此,客戶端和服務器一旦建立連接,必須能讓服務器在以后發(fā)送中尋找定位到這個連接。 局域網(wǎng)聊天系統(tǒng)使該系統(tǒng)的用戶能夠通過客戶端登入到該系統(tǒng),然后直接與系統(tǒng)交互。首先,需啟動服務器,進行服務器的配置,進行正確的服務器配置和數(shù)據(jù)庫連接并測試成功后,開啟服務器。接下來,在客戶端,該系統(tǒng)的用戶能夠通過登錄界面進入,然后直接與系統(tǒng)交互,進行文字傳送。本系統(tǒng)支持的活動列表如下: (1) 配置服務器,連接數(shù)據(jù)庫;(2) 開啟
35、服務器; (3) 用戶注冊賬號; (4) 用戶登錄系統(tǒng);(5) 用戶與系統(tǒng)交互,進行文字傳送; (6) 用戶登錄后,可查找,添加和刪除好友;(7) 用戶好友登錄后,自動彈出系統(tǒng)消息,提示有好友上線; (8) 實現(xiàn)文件傳輸功能;A識別參與者參與者的描述如下: (1)普通用戶 描述:普通用戶可以注冊 QQ 號碼,登錄聊天系統(tǒng),添加好友,文字傳送,文件傳輸。 示例:注冊的普通用戶。 (2)管理員 描述:管理員除了有普通用戶所有權(quán)限外,還具有其它權(quán)限:配置服務器,開啟服務。 B識別用例經(jīng)過識別參與者后,對系統(tǒng)需求進一步分析,可以確定系統(tǒng)中有如下用例: (1)Registe(注冊) 本用例提供了普通用戶
36、注冊的功能。 (2)Login(登錄) 本用例提供已注冊的普通用戶和管理員登錄系統(tǒng)的功能。 (3)Addfriends(添加好友) 本用例提供了普通用戶添加好友功能。(4)startserver(開啟服務) 本用例為管理員提供了開啟服務的功能。(5)configserver(配置服務器) 本用例為管理員提供了配置服務器的功能。經(jīng)過識別參與者后,對系統(tǒng)需求進一步分析,建立如圖系統(tǒng)用例圖??紤]到系統(tǒng)的可重用性和伸縮性,需要將本系統(tǒng)的網(wǎng)絡通信底層和應用系統(tǒng)分離開。這樣,基于可重用的網(wǎng)絡通信層,可以實現(xiàn)其他各種實時性較高的應用系統(tǒng)。 本系統(tǒng)在架構(gòu)設計上將分3 個層次,如圖3-2 所示。 3-2 架構(gòu)層
37、次圖本系統(tǒng)最底層是Socket 通信層,將負責客戶端和服務器之間快速的數(shù)據(jù)交換,它通過接口層和最上面應用層保持實時數(shù)據(jù)聯(lián)系。用戶從客戶端進入到本系統(tǒng)前,將實現(xiàn)統(tǒng)一的用戶登錄驗證機制。Socket 底層設計分兩大部分:協(xié)議設計和連接處理設計:協(xié)議設計和連接處理設計;接口層的目的是提供底層和應用蹭一個中介媒體的作用,但是不能設計得太復雜,以免延誤數(shù)據(jù)傳送時間。在本系統(tǒng)中,客戶端需要將用戶輸入的聊天信息發(fā)往服務器,那么建立一個線程一直實現(xiàn)發(fā)送功能,由于客戶端監(jiān)視用戶輸入也有一個監(jiān)視線程在運行。這樣,有兩個線程各司其職。一個負責監(jiān)視輸入,另外一個線程負責將輸入發(fā)送出去。那么再這兩個線程之間如何通信?最經(jīng)常使用的辦法是使用隊列(Queue)模式。Queue 模式是處理消息通信的基本辦法,如圖3-3 所示。 本系統(tǒng)中應用Queue 模式有一個問題,加入動作是由用戶輸入決定的,一旦有用戶輸入,就會發(fā)生假如動作,那么,提取線程會在隊列另外一段進入死循環(huán)不斷的讀取,這樣才能在隊列中一旦有對象事件時,能夠被立即提取出來,因此必須使用while(!Thread. interrupted()實現(xiàn)死循環(huán)。 如圖3-4 所示。 圖3-4 改進后的隊列Queue 模式 由此可見,并不是說使用了多線程就能提高系統(tǒng)性能,更重要的是還要注意
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宗教用品經(jīng)銷管理辦法
- 新課標培訓分享課件內(nèi)容
- 肩關(guān)節(jié)護理課件
- 肥胖兒童管理課件
- 腸胃炎護理課件
- 生鮮日配培訓課件
- 產(chǎn)科異位妊娠課件培訓
- 甘蔗種植管理培訓課件
- 高中對口升學數(shù)學試卷
- 二下人教版期末數(shù)學試卷
- 安徽青碩建設有限公司招聘筆試真題2024
- 公司適用法律法規(guī)標準清單2025年08月更新
- 2025年4月自考00077金融市場學試題
- 中意紙質(zhì)文物脫酸技術(shù)應用與思考
- 國家開放大學機考答案 5個人與團隊管理2025-06-21
- 大慶師范學院《跳高》2023-2024學年第一學期期末試卷
- 2025年廣元市中考語文試卷真題(含標準答案)
- 中央民族大學強基校測面試題
- 幸福與健康課件
- 2025年安徽省中考生物試卷真題(含答案)
- 窗簾實施方案(3篇)
評論
0/150
提交評論