基于JAVA的文字聊天傳輸工具開(kāi)發(fā)設(shè)計(jì)-畢業(yè)設(shè)計(jì)學(xué)位論文范文模板參考資料_第1頁(yè)
基于JAVA的文字聊天傳輸工具開(kāi)發(fā)設(shè)計(jì)-畢業(yè)設(shè)計(jì)學(xué)位論文范文模板參考資料_第2頁(yè)
基于JAVA的文字聊天傳輸工具開(kāi)發(fā)設(shè)計(jì)-畢業(yè)設(shè)計(jì)學(xué)位論文范文模板參考資料_第3頁(yè)
基于JAVA的文字聊天傳輸工具開(kāi)發(fā)設(shè)計(jì)-畢業(yè)設(shè)計(jì)學(xué)位論文范文模板參考資料_第4頁(yè)
基于JAVA的文字聊天傳輸工具開(kāi)發(fā)設(shè)計(jì)-畢業(yè)設(shè)計(jì)學(xué)位論文范文模板參考資料_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)論文題目名稱:報(bào) 告 人:專業(yè)班級(jí):指導(dǎo)教師: 文件傳輸與文字聊天工具 摘 要隨著計(jì)算機(jī)科學(xué)和Internet 的飛速發(fā)展, 網(wǎng)上聊天已成為人們相互交流的一種方式, 與E-mail、 相比, 聊天服務(wù)更具有實(shí)時(shí)性和有效性。 本論文提出一個(gè)運(yùn)行于Elcipse 平臺(tái)上的局域網(wǎng)聊天軟件的解決方案。該聊天軟件包括服務(wù)器端和客戶端兩個(gè)模塊,客戶端通過(guò)服務(wù)器端進(jìn)行通信。服務(wù)器端模塊主要實(shí)現(xiàn)了服務(wù)器的配置和數(shù)據(jù)的傳遞;客戶端模塊主要實(shí)現(xiàn)了用戶注冊(cè)、登錄、文字聊天,文件傳輸?shù)裙δ?。該軟件采用多線程技術(shù)支持多用戶操作,并采用相關(guān)技術(shù)進(jìn)行了優(yōu)化,加快了文字傳遞速度。 該軟件能夠幫助企業(yè)在局域網(wǎng)內(nèi)搭建起自

2、己的聊天系統(tǒng),避免企業(yè)內(nèi)部員工使用類似QQ 等軟件泄露內(nèi)部信息,但是該軟件只實(shí)現(xiàn)了聊天的基本功能,還有很多不足之處需要改進(jìn)。關(guān)鍵詞c/s Socket; Java; GUI;數(shù)據(jù)庫(kù) 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)絡(luò)聊天已經(jīng)成為人們工作生活中傳遞信息、交流感情的重要工具。網(wǎng)絡(luò)版的聊天軟件種類繁多,如QQ、OICQ、MSN 等,實(shí)現(xiàn)了隨時(shí)隨地上網(wǎng)聊天,給人們帶來(lái)了很大的方便。但是這些聊天軟件也存在以下不足:用戶必須連接Internet;用戶再工作時(shí)容易沉迷于網(wǎng)絡(luò)聊天。為了方便單位企業(yè)內(nèi)部的信息交流,減少不必要的財(cái)力和人力資源浪費(fèi),開(kāi)發(fā)一個(gè)局域網(wǎng)聊

7、天軟件是非常必要的。 現(xiàn)在,多渠道的信息源、網(wǎng)絡(luò)化的數(shù)據(jù)分布、快捷醫(yī)用的交互操作、智能化的分析決策等特點(diǎn)越來(lái)越成為衡量有兩聊天軟件的關(guān)鍵,因此,本人開(kāi)發(fā)一個(gè)局域網(wǎng)聊天軟件,該聊天軟件是基于JAVA語(yǔ)言運(yùn)行于Eclipse平臺(tái)上,利用的技術(shù)主要是Socket通信和多線程技術(shù),使用MySQL 2005作為后臺(tái)數(shù)據(jù)庫(kù)管理。為實(shí)現(xiàn)和方便客戶端間通信,在客戶端進(jìn)行了人性化的界面設(shè)計(jì),用戶可以注冊(cè)號(hào)碼,設(shè)置個(gè)人資料,實(shí)現(xiàn)雙向聊天功能,可以指定好友查找以及模糊條件搜索添加好友并具文件傳輸?shù)裙δ堋T摴ぞ卟捎肑AVA技術(shù)配合Eclipse軟件實(shí)現(xiàn)。主要利用了JAVA的簡(jiǎn)單高效,面向?qū)ο?,支持多線程,與操作系統(tǒng)和

8、運(yùn)行的平臺(tái)環(huán)境無(wú)關(guān)性等特點(diǎn)。以及eclipse軟件的簡(jiǎn)單易學(xué),操作方便的特性。同時(shí)也由于這個(gè)開(kāi)發(fā)使用的主要工具基本上都是免費(fèi)的。不需要多大的經(jīng)濟(jì)負(fù)擔(dān)。 該聊天工具主要解決了兩方面的問(wèn)題。服務(wù)器端和客戶端。在服務(wù)器端可以實(shí)現(xiàn)如下功能:能夠處理用戶的注冊(cè);通過(guò)身份驗(yàn)證方式處理用戶登錄;可以向所有在線用戶廣播信息;刪除長(zhǎng)久不使用的用戶信息;配有操作文檔;及時(shí)接收用戶的服務(wù)請(qǐng)求幫助。在客戶端可以實(shí)現(xiàn)如下功能:聊天信息的傳輸,支持私聊;文件的傳輸和接收等功能。標(biāo)準(zhǔn)Java包中提供了相當(dāng)完善的針對(duì)網(wǎng)絡(luò)通信和I/O相關(guān)操作的類庫(kù),利用這些類,可以設(shè)計(jì)出一個(gè)網(wǎng)絡(luò)交互工具。socket編程讓程序員幾乎不用了解任

9、何網(wǎng)絡(luò)通信協(xié)議,就可以編寫(xiě)出強(qiáng)大的網(wǎng)絡(luò)系統(tǒng)。要建立一個(gè)Server-Client結(jié)構(gòu)的聊天系統(tǒng),也非難事。善加利用socket以及多線程編程,就能實(shí)現(xiàn)這個(gè)工具的設(shè)計(jì)。 第一章概述1.1 課題背景及意義 本設(shè)計(jì)的開(kāi)發(fā)采用C/S結(jié)構(gòu),在基于java開(kāi)發(fā)環(huán)境下,使用java編程語(yǔ)言進(jìn)行開(kāi)發(fā)。本文首先論述國(guó)內(nèi)外聊天工具的發(fā)展情況和現(xiàn)今的發(fā)展方向,并對(duì)開(kāi)發(fā)環(huán)境和開(kāi)發(fā)語(yǔ)言進(jìn)行了簡(jiǎn)單介紹;對(duì)本設(shè)計(jì)所要開(kāi)發(fā)的多功能聊天軟件作了較為全面的需求分析,并給出了多功能聊天軟件的設(shè)計(jì)方案。為實(shí)現(xiàn)網(wǎng)絡(luò)聊天的功能,采用 Windows Socket 編程,在設(shè)計(jì)聊天方案時(shí),實(shí)行將所有信息發(fā)往服務(wù)器端,再由服務(wù)器進(jìn)行分別處理

10、的思路,服務(wù)器端是所有信息的中心。由于服務(wù)器端要保存用戶信息,我們利用數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)這一功能,因此首先需要建立用戶信息數(shù)據(jù)庫(kù)。 在客戶端保存聊天紀(jì)錄和用戶號(hào)碼這一功能的實(shí)現(xiàn)中,采用了文件系統(tǒng)設(shè)計(jì)。 在信息到來(lái)及好友上線時(shí),通過(guò)閃動(dòng)托盤(pán)圖標(biāo)和播放不同的音樂(lè)進(jìn)行提示。建立消息鏈表來(lái)保存用戶接收的各種消息。主要功能包括文字聊天、文件傳輸天等;本畢業(yè)設(shè)計(jì)主要實(shí)現(xiàn)的是多功能聊天軟件的部分功能,即文字聊天、文件傳輸?shù)裙δ?,主要完成的任?wù)包括服務(wù)器模塊的設(shè)計(jì)、數(shù)據(jù)庫(kù)的設(shè)計(jì)、添加好友、文字聊天和文件傳輸?shù)裙δ?。,?gòu)成一個(gè)實(shí)用的、功能完善的聊天軟件,達(dá)到預(yù)期目標(biāo);通過(guò)運(yùn)行、測(cè)試與分析,該多功能聊天軟件運(yùn)行穩(wěn)定、可

11、靠,具有一定的實(shí)用價(jià)值。該論文針對(duì)課題背景對(duì)國(guó)內(nèi)發(fā)展現(xiàn)狀進(jìn)行解析,并且闡述了本設(shè)計(jì)的研究意義,進(jìn)行了設(shè)計(jì)的具體分析,聊天工具流程的分析與設(shè)計(jì),數(shù)據(jù)庫(kù)模塊的分析與設(shè)計(jì),文字聊天以及文件傳輸模塊的分析與具體實(shí)現(xiàn)。添加好友、服務(wù)器以及其它特殊功能模塊實(shí)現(xiàn)分析。1.2 課題內(nèi)容與目標(biāo)結(jié)合自己在大學(xué)階段所學(xué)的知識(shí)和參與實(shí)驗(yàn)經(jīng)驗(yàn),研究設(shè)計(jì)了基于java技術(shù)的文件傳輸與文字聊天工具. 聊天工具分為服務(wù)器端和客戶端兩大模塊。下圖為軟件功能模塊圖: 設(shè)計(jì)目標(biāo): 聊天工具分為服務(wù)器端和客戶端,以及圖形化界面。簡(jiǎn)單分析服務(wù)器端和客戶端所要完成的任務(wù)。(1)服務(wù)器端應(yīng)當(dāng)建立一個(gè)ServerSocket,并且不斷進(jìn)行偵

12、聽(tīng)是否有客戶端連接或者斷開(kāi)連接(包括判斷沒(méi)有響應(yīng)的連接超時(shí))。(2)服務(wù)器端應(yīng)當(dāng)是一個(gè)信息發(fā)送中心,所有客戶端的信息都傳到服務(wù)器端,由服務(wù)器端根據(jù)要求分發(fā)信息。(3)客戶端與服務(wù)器端建立通信通道,向服務(wù)器端發(fā)送信息。(4)客戶端接收來(lái)自服務(wù)器的信息。主要研究開(kāi)發(fā)內(nèi)容是:熟悉 java和 MySQL 2005 服務(wù)器的配置,搭配系統(tǒng)開(kāi)發(fā)平臺(tái),探索在此開(kāi)發(fā)平臺(tái)下,利用 socket 編程技術(shù)、多線程開(kāi)發(fā)技術(shù)、TCP、UDP 協(xié)議等進(jìn)行局域網(wǎng)聊天軟件的實(shí)際開(kāi)發(fā)。 第二章開(kāi)發(fā)環(huán)境及技術(shù)處理器:Inter Pentium PIII或更高處理器內(nèi)存:512M以上網(wǎng)絡(luò):局域網(wǎng)開(kāi)發(fā)系統(tǒng)應(yīng)盡可能采用高檔的硬件,

13、因此在應(yīng)用時(shí)應(yīng)采用更好的配置。操作系統(tǒng):windows XP開(kāi)發(fā)語(yǔ)言:JAVA后臺(tái)數(shù)據(jù)庫(kù)開(kāi)發(fā):MySQL 2005Eclipse介紹eclipse-galileoEclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具(Java Development Tools,JDT)。 Eclipse最初是由IBM公司開(kāi)發(fā)的替代商業(yè)軟件Visual Age for Java的下一代IDE開(kāi)發(fā)環(huán)境,2001年11月貢獻(xiàn)給開(kāi)源社區(qū),現(xiàn)在它由非營(yíng)利軟件供

14、應(yīng)商聯(lián)盟Eclipse基金會(huì)(Eclipse Foundation)管理。 2003年,Eclipse 3.0選擇OSGi服務(wù)平臺(tái)規(guī)范為運(yùn)行時(shí)架構(gòu)。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號(hào)為Ganymede的3.4版。2009年7月發(fā)布代號(hào)為GALILEO的3.5版。 Eclipse是著名的跨平臺(tái)的自由集成開(kāi)發(fā)環(huán)境(IDE)。最初主要用來(lái)Java語(yǔ)言開(kāi)發(fā),但是目前亦有人通過(guò)插件使其作為其他計(jì)算機(jī)語(yǔ)言比如C+和Python的開(kāi)發(fā)工具。Eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得Eclipse擁有其他功能相對(duì)固定的IDE軟件很難具有的靈活性。許多軟件開(kāi)發(fā)商以Ecl

15、ipse為框架開(kāi)發(fā)自己的IDE。 Eclipse 最初由OTI和IBM兩家公司的IDE產(chǎn)品開(kāi)發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎(chǔ),包括Platform、JDT 和PDE。目前由IBM牽頭,圍繞著Eclipse項(xiàng)目已經(jīng)發(fā)展成為了一個(gè)龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項(xiàng)目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一個(gè)開(kāi)發(fā)源碼項(xiàng)目,它其實(shí)是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其開(kāi)放源碼

16、,任何人都可以免費(fèi)得到,并可以在此基礎(chǔ)上開(kāi)發(fā)各自的插件,因此越來(lái)越受人們關(guān)注。近期還有包括Oracle在內(nèi)的許多大公司也紛紛加入了該項(xiàng)目,并宣稱Eclipse將來(lái)能成為可進(jìn)行任何語(yǔ)言開(kāi)發(fā)的IDE集大成者,使用者只需下載各種語(yǔ)言的插件即可。 雖然大多數(shù)用戶很樂(lè)于將 Eclipse 當(dāng)作 Java IDE 來(lái)使用,但 Eclipse 的目標(biāo)不僅限于此。Eclipse 還包括插件開(kāi)發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開(kāi)發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無(wú)縫集成的工具。由于 Eclipse 中

17、的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所。 基于 Eclipse 的應(yīng)用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它構(gòu)成了 IBM Java 開(kāi)發(fā)工具系列的基礎(chǔ)。例如,WebSphere Studio Application Developer 添加了對(duì) JSP、servlet、EJB、XML、Web 服務(wù)和數(shù)據(jù)庫(kù)訪問(wèn)的支持。關(guān)鍵技術(shù)2.2.1 JAVA介紹Java是一種簡(jiǎn)單的,面向?qū)ο蟮?,分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異的動(dòng)態(tài)語(yǔ)

18、言。 Java語(yǔ)言的語(yǔ)法與C語(yǔ)言和C+語(yǔ)言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C+ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語(yǔ)言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。 Java語(yǔ)言提供類、接口和繼承等原語(yǔ),為了簡(jiǎn)單起見(jiàn),只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制。Java語(yǔ)言全面支持動(dòng)態(tài)綁定,而C+ 語(yǔ)言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定??傊?,Java語(yǔ)言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。 Java語(yǔ)言支持Internet應(yīng)用的開(kāi)發(fā),在基本的J

19、ava應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口,它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫(kù),包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。 Java的強(qiáng)類型機(jī)制、異常處理、廢料的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。 Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語(yǔ)言具有的許多安全特性以外,Java對(duì)通過(guò)網(wǎng)絡(luò)下載的類具有一個(gè)安全防范機(jī)制(類ClassLoader),如分配不同的

20、名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。 Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件), 然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。 這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長(zhǎng)度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。 如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式, 然后可

21、以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過(guò)程中需要的類在聯(lián)接階段被載入到運(yùn)行環(huán)境中。 與那些解釋型的高級(jí)腳本語(yǔ)言相比,Java的確是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來(lái)越接近于C+。 在java語(yǔ)言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來(lái)創(chuàng)建。通常有兩種方法來(lái)創(chuàng)建線程:其一,使用型構(gòu)為T(mén)hread(Runnable) 的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫(xiě)run方法,使用該子類創(chuàng)建

22、的對(duì)象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來(lái)控制。 Java語(yǔ)言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。 Java語(yǔ)言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過(guò)網(wǎng)絡(luò)來(lái)載入所需要的類。這也有利于軟件的升級(jí)。另外,Java中的類有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類型檢查。 Java語(yǔ)言的優(yōu)良特性使得Java應(yīng)用具有無(wú)比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護(hù)費(fèi)用。

23、Java對(duì)對(duì)象技術(shù)的全面支持和Java平臺(tái)內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開(kāi)發(fā)時(shí)間并降低成本。Java的編譯一次,到處可運(yùn)行的特性使得它能夠提供一個(gè)隨處可用的開(kāi)放結(jié)構(gòu)和在多平臺(tái)之間傳遞信息的低成本方式。特別是Java企業(yè)應(yīng)用編程接口(Java Enterprise APIs)為企業(yè)計(jì)算及電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫(kù)。2.2.2 MySQL介紹 SQL是Structured Query Language(結(jié)構(gòu)化查詢語(yǔ)言)的縮寫(xiě)。SQL是專為數(shù)據(jù)庫(kù)而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫(kù)語(yǔ)言。在使用它時(shí),只需要發(fā)出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL(Structur

24、ed Query Language,結(jié)構(gòu)化查詢語(yǔ)言)是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫(kù)語(yǔ)言。SQL通常使用于數(shù)據(jù)庫(kù)的通訊。ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì))聲稱,SQL是關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。SQL語(yǔ)句通常用于完成一些數(shù)據(jù)庫(kù)的操作任務(wù),比如在數(shù)據(jù)庫(kù)中更新數(shù)據(jù),或者從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)。使用SQL的常見(jiàn)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQL Ab公司。在2008年1月16號(hào)被Sun公司收購(gòu)。而2009年,SUN又被Oracle收購(gòu).對(duì)于Mysql的前途

25、,沒(méi)有任何人抱樂(lè)觀的態(tài)度.目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。windows socket網(wǎng)絡(luò)編程接口 選定WINDOWS 平臺(tái)開(kāi)發(fā)網(wǎng)絡(luò)通信程序,可以選擇WINDOWS 的SOCKETS 編程接口,Windows Sockets 是一套開(kāi)放的、支持多種協(xié)議的Windows 下的網(wǎng)絡(luò)編程接口?,F(xiàn)在的Winsock 已經(jīng)基本上實(shí)現(xiàn)了與協(xié)議無(wú)關(guān),你可以使用Windows sockets 來(lái)調(diào)用多種協(xié)議的功能,但較常使用的是TCP/IP 協(xié)議。

26、Windows sockets 無(wú)疑是我們進(jìn)行網(wǎng)絡(luò)編程的利器。所有的Windows Sockets 實(shí)現(xiàn)都支持流套接口和數(shù)據(jù)報(bào)套接口。應(yīng)用程序調(diào)用Windows Sockets 的API 實(shí)現(xiàn)相互之間的通訊。Windows Sockets 又利用下層的網(wǎng)絡(luò)通訊協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通訊工作。它們之間的關(guān)系如圖2-1所示: 圖2-1 Windows Sockets 實(shí)現(xiàn)通訊工作的各層關(guān)系圖2.2.4多線程開(kāi)發(fā)技術(shù) 多線程在構(gòu)建大型系統(tǒng)的時(shí)候是需要重點(diǎn)關(guān)注的一個(gè)重要方面,特別是在效率(系統(tǒng)跑得多快?)和性能(系統(tǒng)工作正常?)之間做一個(gè)權(quán)衡的時(shí)候。恰當(dāng)?shù)氖褂枚嗑€程可以極大的提高系統(tǒng)性能。使

27、用多線程的好處有以下幾點(diǎn): ·使用線程可以把占據(jù)長(zhǎng)時(shí)間的程序中的任務(wù)放到后臺(tái)去處理;·用戶界面可以更加吸引人,這樣比如用戶點(diǎn)擊了一個(gè)按鈕去觸發(fā)某些事件的處理,可以彈 出一個(gè)進(jìn)度條來(lái)顯示處理的進(jìn)度; ·程序的運(yùn)行速度可能加快; ·在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫(xiě)和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。 在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。 在本質(zhì)上和結(jié)構(gòu)來(lái)說(shuō),一般來(lái)說(shuō),你可以"手動(dòng)"為長(zhǎng)時(shí)間運(yùn)行的任務(wù)創(chuàng)建一個(gè)新的線程,另外對(duì)于短時(shí)間運(yùn)行的任務(wù)尤其是經(jīng)常需要開(kāi)始的那些,進(jìn)程池是一個(gè)非常好的選擇。進(jìn)程池可以同時(shí)運(yùn)行多

28、個(gè)任務(wù),還可以使用框架類。對(duì)于資源緊缺需要進(jìn)行同步的情況來(lái)說(shuō),它可以限制某一時(shí)刻只允許一個(gè)線程訪問(wèn)資源。這種情況可以視為給線程實(shí)現(xiàn)了鎖機(jī)制。2.2.5TCP/IP協(xié)議、UDP協(xié)議 網(wǎng)際協(xié)議IP 是TCP/IP 的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。 IP 層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來(lái)的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層-TCP 或UDP 層;相反,IP 層也把從TCP 或 UDP 層接收來(lái)的數(shù)據(jù)包傳送到更低層。IP 數(shù)據(jù)包是不可靠的,因?yàn)?IP 并沒(méi)有做任何事情來(lái)確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒(méi)有被破壞。IP 數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的

29、地址)。 如果IP 數(shù)據(jù)包中有已經(jīng)封好的TCP 數(shù)據(jù)包,那么IP 將把它們向上傳送到TCP 層。TCP 將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。 TCP 數(shù)據(jù)包中包括序號(hào)和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。 UDP 與TCP 位于同一層,但對(duì)于數(shù)據(jù)包的順序錯(cuò)誤或重發(fā)。因此,UDP 不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP 主要用于那些面向查詢 -應(yīng)答的服務(wù). TCP 和UDP 服務(wù)通常有一個(gè)客戶/服務(wù)器的關(guān)系。兩個(gè)系統(tǒng)間的多重連接是這樣相互確認(rèn)并協(xié)調(diào)一致的,TCP 或UDP 連接唯一地使用每個(gè)信息中的如下四項(xiàng)進(jìn)行確認(rèn): 源IP 地址 發(fā)送包的IP 地

30、址。 目的IP 地址 接收包的IP 地址。 源端口 源系統(tǒng)上的連接的端口。 目的端口 目的系統(tǒng)上的連接的端口。 端口是一個(gè)軟件結(jié)構(gòu),被客戶程序或服務(wù)進(jìn)程用來(lái)發(fā)送和接收信息。一個(gè)端口對(duì)應(yīng)一個(gè)16 比特的數(shù)。服務(wù)進(jìn)程通常使用一個(gè)固定的端口,例如, SMTP 使用25。這些端口號(hào)是“廣為人知”的,因?yàn)樵诮⑴c特定的主機(jī)或服務(wù)的連接時(shí),需要這些地址和目的地址進(jìn)行通訊。Client/Server結(jié)構(gòu) Client/Server 結(jié)構(gòu)(C/S 結(jié)構(gòu))是大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。通過(guò)它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client 端和 Server 端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開(kāi)銷。目前大

31、多數(shù)應(yīng)用軟件系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu)。 C/S 結(jié)構(gòu)軟件分為客戶機(jī)和服務(wù)器兩層,客戶機(jī)不是毫無(wú)運(yùn)算能力的輸入、輸出設(shè)備,而是具有了一定的數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)能力,通過(guò)把應(yīng)用軟件的計(jì)算和數(shù)據(jù)合理地分配在客戶機(jī)和服務(wù)器兩端,可以有效地降低網(wǎng)絡(luò)通信量和服務(wù)器運(yùn)算量。由于服務(wù)器連接個(gè)數(shù)和數(shù)據(jù)通信量的限制,這種結(jié)構(gòu)的軟件適于在用戶數(shù)目不多的局域網(wǎng)內(nèi)使用。 C/S 結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對(duì)應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。 缺點(diǎn)主要有以下幾個(gè): 只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公和分布式辦公越來(lái)越普及,這需要我

32、們的系統(tǒng)具有擴(kuò)展性。這種方式遠(yuǎn)程訪問(wèn)需要專門(mén)的技術(shù),同時(shí)要對(duì)系統(tǒng)進(jìn)行專門(mén)的設(shè)計(jì)來(lái)處理分布式的數(shù)據(jù)。 第三章 系統(tǒng)分析與設(shè)計(jì) 聊天交流是目前互聯(lián)網(wǎng)提供的主要內(nèi)容。聊天系統(tǒng)有多種實(shí)現(xiàn)方式,類似ICQ 屬于一種點(diǎn)對(duì)點(diǎn)的聊天系統(tǒng);還有一種是基于Socket 的集中式聊天系統(tǒng),這種聊天系統(tǒng)需要登錄統(tǒng)一的聊天服務(wù)器。 在基于Socket 的聊天系統(tǒng)中,主要有兩種角色:服務(wù)器和客戶端,不同的客戶端登錄集中式的服務(wù)器,通過(guò)服務(wù)器將一個(gè)客戶端發(fā)出的信息推送到其他所有客戶端。 基于Socket 的聊天系統(tǒng)最早實(shí)現(xiàn)是使用網(wǎng)頁(yè)刷新方式,通過(guò)客戶端不斷地自動(dòng)刷新,將服務(wù)器端整個(gè)頁(yè)面內(nèi)容下載到客戶端顯示,這種方式的聊天速

33、度慢,而且有刷屏現(xiàn)象,很快被更新的聊天技術(shù)所替代。 聊天系統(tǒng)在客戶端和服務(wù)器之間主要傳送的是文字信息,服務(wù)器端只需要把最近的文字信息推送到客戶端,這樣減少了網(wǎng)絡(luò)傳輸內(nèi)容,節(jié)省了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間,無(wú)疑提高了聊天速度。這種“推”技術(shù)是目前基于Socket 聊天系統(tǒng)的主要實(shí)現(xiàn)技術(shù)。 在基于Socket 的聊天系統(tǒng),客戶端和服務(wù)器必須保持隨時(shí)隨地的連接。這有別于普通 Web 瀏覽的連接方式。在使用瀏覽器訪問(wèn)服務(wù)器時(shí),先由客戶端發(fā)出HTTP 協(xié)議,然后服務(wù)器響應(yīng)處理這個(gè)客戶端的響應(yīng),再返回處理結(jié)果;請(qǐng)求(Request)和響應(yīng)(Response)是一種一對(duì)一的前后因果關(guān)系。 而在基于Socket 的聊天系

34、統(tǒng)中,客戶端發(fā)出聊天信息的同時(shí),客戶端也在接受服務(wù)器發(fā)送過(guò)來(lái)的其他人的聊天信息,因此,請(qǐng)求和響應(yīng)不存在那種前后對(duì)應(yīng)關(guān)系,是兩種分別獨(dú)立進(jìn)行的進(jìn)程。因?yàn)榉?wù)器任何時(shí)候都可能發(fā)送信息到客戶端,因此,客戶端和服務(wù)器一旦建立連接,必須能讓服務(wù)器在以后發(fā)送中尋找定位到這個(gè)連接。 局域網(wǎng)聊天系統(tǒng)使該系統(tǒng)的用戶能夠通過(guò)客戶端登入到該系統(tǒng),然后直接與系統(tǒng)交互。首先,需啟動(dòng)服務(wù)器,進(jìn)行服務(wù)器的配置,進(jìn)行正確的服務(wù)器配置和數(shù)據(jù)庫(kù)連接并測(cè)試成功后,開(kāi)啟服務(wù)器。接下來(lái),在客戶端,該系統(tǒng)的用戶能夠通過(guò)登錄界面進(jìn)入,然后直接與系統(tǒng)交互,進(jìn)行文字傳送。本系統(tǒng)支持的活動(dòng)列表如下: (1) 配置服務(wù)器,連接數(shù)據(jù)庫(kù);(2) 開(kāi)啟

35、服務(wù)器; (3) 用戶注冊(cè)賬號(hào); (4) 用戶登錄系統(tǒng);(5) 用戶與系統(tǒng)交互,進(jìn)行文字傳送; (6) 用戶登錄后,可查找,添加和刪除好友;(7) 用戶好友登錄后,自動(dòng)彈出系統(tǒng)消息,提示有好友上線; (8) 實(shí)現(xiàn)文件傳輸功能;A識(shí)別參與者參與者的描述如下: (1)普通用戶 描述:普通用戶可以注冊(cè) QQ 號(hào)碼,登錄聊天系統(tǒng),添加好友,文字傳送,文件傳輸。 示例:注冊(cè)的普通用戶。 (2)管理員 描述:管理員除了有普通用戶所有權(quán)限外,還具有其它權(quán)限:配置服務(wù)器,開(kāi)啟服務(wù)。 B識(shí)別用例經(jīng)過(guò)識(shí)別參與者后,對(duì)系統(tǒng)需求進(jìn)一步分析,可以確定系統(tǒng)中有如下用例: (1)Registe(注冊(cè)) 本用例提供了普通用戶

36、注冊(cè)的功能。 (2)Login(登錄) 本用例提供已注冊(cè)的普通用戶和管理員登錄系統(tǒng)的功能。 (3)Addfriends(添加好友) 本用例提供了普通用戶添加好友功能。(4)startserver(開(kāi)啟服務(wù)) 本用例為管理員提供了開(kāi)啟服務(wù)的功能。(5)configserver(配置服務(wù)器) 本用例為管理員提供了配置服務(wù)器的功能。經(jīng)過(guò)識(shí)別參與者后,對(duì)系統(tǒng)需求進(jìn)一步分析,建立如圖系統(tǒng)用例圖。考慮到系統(tǒng)的可重用性和伸縮性,需要將本系統(tǒng)的網(wǎng)絡(luò)通信底層和應(yīng)用系統(tǒng)分離開(kāi)。這樣,基于可重用的網(wǎng)絡(luò)通信層,可以實(shí)現(xiàn)其他各種實(shí)時(shí)性較高的應(yīng)用系統(tǒng)。 本系統(tǒng)在架構(gòu)設(shè)計(jì)上將分3 個(gè)層次,如圖3-2 所示。 3-2 架構(gòu)層

37、次圖本系統(tǒng)最底層是Socket 通信層,將負(fù)責(zé)客戶端和服務(wù)器之間快速的數(shù)據(jù)交換,它通過(guò)接口層和最上面應(yīng)用層保持實(shí)時(shí)數(shù)據(jù)聯(lián)系。用戶從客戶端進(jìn)入到本系統(tǒng)前,將實(shí)現(xiàn)統(tǒng)一的用戶登錄驗(yàn)證機(jī)制。Socket 底層設(shè)計(jì)分兩大部分:協(xié)議設(shè)計(jì)和連接處理設(shè)計(jì):協(xié)議設(shè)計(jì)和連接處理設(shè)計(jì);接口層的目的是提供底層和應(yīng)用蹭一個(gè)中介媒體的作用,但是不能設(shè)計(jì)得太復(fù)雜,以免延誤數(shù)據(jù)傳送時(shí)間。在本系統(tǒng)中,客戶端需要將用戶輸入的聊天信息發(fā)往服務(wù)器,那么建立一個(gè)線程一直實(shí)現(xiàn)發(fā)送功能,由于客戶端監(jiān)視用戶輸入也有一個(gè)監(jiān)視線程在運(yùn)行。這樣,有兩個(gè)線程各司其職。一個(gè)負(fù)責(zé)監(jiān)視輸入,另外一個(gè)線程負(fù)責(zé)將輸入發(fā)送出去。那么再這兩個(gè)線程之間如何通信?最經(jīng)常使用的辦法是使用隊(duì)列(Queue)模式。Queue 模式是處理消息通信的基本辦法,如圖3-3 所示。 本系統(tǒng)中應(yīng)用Queue 模式有一個(gè)問(wèn)題,加入動(dòng)作是由用戶輸入決定的,一旦有用戶輸入,就會(huì)發(fā)生假如動(dòng)作,那么,提取線程會(huì)在隊(duì)列另外一段進(jìn)入死循環(huán)不斷的讀取,這樣才能在隊(duì)列中一旦有對(duì)象事件時(shí),能夠被立即提取出來(lái),因此必須使用while(!Thread. interrupted()實(shí)現(xiàn)死循環(huán)。 如圖3-4 所示。 圖3-4 改進(jìn)后的隊(duì)列Queue 模式 由此可見(jiàn),并不是說(shuō)使用了多線程就能提高系統(tǒng)性能,更重要的是還要注意

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論