基于SOCKET技術(shù)的網(wǎng)絡(luò)即時(shí)通訊軟件的設(shè)計(jì)及實(shí)現(xiàn)_第1頁(yè)
基于SOCKET技術(shù)的網(wǎng)絡(luò)即時(shí)通訊軟件的設(shè)計(jì)及實(shí)現(xiàn)_第2頁(yè)
基于SOCKET技術(shù)的網(wǎng)絡(luò)即時(shí)通訊軟件的設(shè)計(jì)及實(shí)現(xiàn)_第3頁(yè)
基于SOCKET技術(shù)的網(wǎng)絡(luò)即時(shí)通訊軟件的設(shè)計(jì)及實(shí)現(xiàn)_第4頁(yè)
基于SOCKET技術(shù)的網(wǎng)絡(luò)即時(shí)通訊軟件的設(shè)計(jì)及實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(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、目 錄摘 要.11 前 言.22 可行性研究.22.1 開(kāi)發(fā)背景.22.2 技術(shù)可行性分析.22.3 面臨問(wèn)題及現(xiàn)狀.32.4 開(kāi)發(fā)目的及意義.32.5.1 運(yùn)行環(huán)境 .32.5.2 性能要求 .33 需求分析.33.1 系統(tǒng)總體功能.43.2 開(kāi)發(fā)工具以及使用的主要技術(shù)簡(jiǎn)介.43.2.1 數(shù)據(jù)庫(kù) Microsoft SQL2000 簡(jiǎn)介 .63.2.2 eclipse 簡(jiǎn)介 .63.3 客戶機(jī)/服務(wù)期(C/S)工作原理.73.4 套接字(SOCKET)原理圖.83.5 系統(tǒng)邏輯模式.93 概要設(shè)計(jì).103.1 客戶端 .103.1.1 用戶注冊(cè)功能模塊.103.1.2 發(fā)送消息功能模塊 .1

2、13.1.3 查找好友功能模塊 .113.1.4 添加好友模塊.113.1.5 刪除好友模塊 .123.1.6 修改個(gè)人信息模塊 .123.2 服務(wù)器 .133.2.1 用戶登錄模塊設(shè)計(jì) .133.2.2 新用戶注冊(cè)模塊設(shè)計(jì) .143.2.3 查找網(wǎng)友模塊設(shè)計(jì) .153.2.4 添加好友模塊設(shè)計(jì) .163.2.5 用戶之間發(fā)送數(shù)據(jù)模塊設(shè)計(jì).173.3 數(shù)據(jù)庫(kù)設(shè)計(jì) .183.3.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì) .193.3.2 數(shù)據(jù)表設(shè)計(jì) .193.3.3 數(shù)據(jù)字典.21(1) 聊天信息字典.214 詳細(xì)設(shè)計(jì).224.1 服務(wù)器端 .224.1.1 服務(wù)器建立和啟動(dòng)模塊 .224.1.2 數(shù)據(jù)庫(kù)交互模塊.2

3、34.1.3 處理客戶端請(qǐng)求模塊.254.1.4 異常處理模塊.254.2 客戶端.254.2.1 客戶端與服務(wù)器建立連接模塊.254.2.2 用戶登陸模塊.264.2.3 注冊(cè)模塊.264.2.4 通訊模塊.274.2.5 聊天模塊.284.2.6 查找好友模塊.294.2.7 個(gè)人信息模塊 .305 總結(jié).32參考文獻(xiàn).33致 謝.34附錄.351基于 socket 技術(shù)的網(wǎng)絡(luò)即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)摘 要:本設(shè)計(jì)以 JAVA 語(yǔ)言作為開(kāi)發(fā)平臺(tái),開(kāi)發(fā)了一個(gè)跨平臺(tái)的,多線程的即時(shí)通信軟件。其中主要應(yīng)用的技術(shù)有數(shù)據(jù)庫(kù)技術(shù)和 SOCKET 網(wǎng)絡(luò)編程技術(shù)和 JAVA 語(yǔ)言的程序界面設(shè)計(jì)技術(shù)(SWI

4、NG)。它包括客戶端和服務(wù)器端,客戶端和服務(wù)器端的通信方式采用了SOCKET 通信原理??蛻舳瞬捎昧?JAVA 語(yǔ)言標(biāo)準(zhǔn)的圖形界面設(shè)計(jì)技術(shù)(SWING),并結(jié)合數(shù)據(jù)庫(kù)的數(shù)據(jù)管理功能設(shè)計(jì)并開(kāi)發(fā)完成了一個(gè)功能全面的即時(shí)通信軟件系統(tǒng)。關(guān)鍵詞:即時(shí)通訊;網(wǎng)絡(luò);JAVA;SWINGDesign and Implementation of Network Immediate Communication Software Based on SocketAbstract: This design developed the software of a cross-platform, multi-threade

5、d real-time communication software by the JAVA programming language. The main application technology is database and SOCKET network and Java programming language program interface design technology. It includes client and server. The communications between the server and client have used socket corr

6、espondence principle. The client has used the JAVA language graphical interface technology (SWING), and combined databases data management functional to designed and developed the software of the fully functional real-time communication. Key words: Network immediate communication software; Internet;

7、 Java; Swing1 前 言近年來(lái),即時(shí)通訊軟件行業(yè)的發(fā)展迅速,它具有的實(shí)時(shí)性、跨平臺(tái)性、成本低、效率高等諸多優(yōu)點(diǎn)。該軟件一經(jīng)面世迅速地得到了多方面人士的親賴,它的適時(shí)出現(xiàn)提供給現(xiàn)代的商務(wù)人士一個(gè)更多的信息傳遞方式。即時(shí)通訊軟件的優(yōu)點(diǎn)不僅僅體現(xiàn)在了商務(wù)應(yīng)用中,它還提供給了人與人之間的一種全新的溝2通方式,由此得到了絕大部分 80 年后的新一代人的喜愛(ài)。一款好的網(wǎng)絡(luò)即時(shí)通訊軟件,不但為坐在電腦面前的人們架起了一座溝通的橋梁,更創(chuàng)造了一個(gè)廣闊的市場(chǎng)。在國(guó)內(nèi)的騰訊公司是最早提供即時(shí)通訊軟件服務(wù)的廠商之一,到現(xiàn)在已經(jīng)占據(jù)了國(guó)內(nèi)市場(chǎng)的 80%以上的市場(chǎng)份額,在這個(gè)行業(yè)內(nèi)極具影響力。隨著中國(guó)電腦的普

8、及和上網(wǎng)的成本降低,網(wǎng)絡(luò)即時(shí)通訊軟件的用戶在未來(lái)的幾年內(nèi)會(huì)持續(xù)的高速的增長(zhǎng)。據(jù) Gartner 公司的研究報(bào)告預(yù)言,到 2007 年,即時(shí)通訊將成為網(wǎng)上交流的主導(dǎo)方式,同時(shí)該行業(yè)的競(jìng)爭(zhēng)也將越來(lái)越激烈。因此,研究和設(shè)計(jì)一款網(wǎng)絡(luò)即時(shí)通信軟件,傾力打造一款適合于中國(guó)人群使用的網(wǎng)絡(luò)即時(shí)通信軟件具有十分重大的意義。2 可行性研究2.12.1 開(kāi)發(fā)背景電子郵件,曾經(jīng)是網(wǎng)絡(luò)交流的主要方式,但是隨著人們對(duì)信息實(shí)時(shí)性的要求不斷的提高,電子郵件不適合消息的實(shí)時(shí)收發(fā)的弊端也日益突出,為了滿足人們新的要求,于是一種全新的軟件誕生即時(shí)通信軟件(IM 軟件) 中國(guó)網(wǎng)民人口為全球第二,92.1%的網(wǎng)民認(rèn)為互聯(lián)網(wǎng)提升了生活質(zhì)

9、量和工作效率。許多的企業(yè)都在企業(yè)的內(nèi)部網(wǎng)中建立的即時(shí)的網(wǎng)絡(luò)通信軟件系統(tǒng),方便企業(yè)員工更為方便的傳遞信息,并且可以避免外部網(wǎng)絡(luò)環(huán)境的所帶來(lái)的影響,在信息安全方面也做得比較成功。在未來(lái)的幾年即時(shí)通信軟件的用戶還會(huì)持續(xù)的以較高的速度增長(zhǎng),對(duì)于即時(shí)通訊軟件的需求還將繼續(xù)增長(zhǎng)。因此,鑒于聊天軟件所特有的特性開(kāi)發(fā)一個(gè)通用的即時(shí)通訊軟件的系統(tǒng)具有重要的意義。 2.2 技術(shù)可行性分析 JAVA 語(yǔ)言已經(jīng)經(jīng)歷了十幾年的發(fā)展,技術(shù)上已經(jīng)十分成熟可行,廣泛的應(yīng)用于客戶機(jī)/服務(wù)期(B/S)系統(tǒng)?;?JAVA 開(kāi)發(fā)的眾多的應(yīng)用也是層出不窮,其中包括,JSP,SERVLET,JDBC,JMS 等技術(shù)。所以用 JAVA

10、語(yǔ)言設(shè)計(jì)即時(shí)通信軟件系統(tǒng)是完全可行的。2.32.3 面臨問(wèn)題及現(xiàn)狀中國(guó)市場(chǎng)上的網(wǎng)絡(luò)即時(shí)通訊軟件各有所長(zhǎng),但是即時(shí)通訊軟件的根本還是在用戶,如果用戶過(guò)度的集中,那么行業(yè)壟斷就必然會(huì)出現(xiàn)。各個(gè)即時(shí)通訊軟3件之間不能相互通信,直接導(dǎo)致了用戶更換即時(shí)通訊軟件時(shí)要付出較高的成本。既不利于即時(shí)通信軟件服務(wù)提供商提高服務(wù)質(zhì)量,也不利于整個(gè)行業(yè)的發(fā)展。2.42.4 開(kāi)發(fā)目的及意義 結(jié)合現(xiàn)有的知識(shí),開(kāi)發(fā)一個(gè)跨平臺(tái)的通用的即時(shí)通信軟件具有十分重大的意義。一方面,鍛煉自己的編寫(xiě)程序的能力。另一方面,爭(zhēng)取把這個(gè)即時(shí)通訊軟件推給用戶使用。使他們更加方便快捷的傳遞信息,提高自己的工作效率。2.5 系統(tǒng)綜合要求2.5.1

11、運(yùn)行環(huán)境(1) 本系統(tǒng)基于 WINDOWS XP 和 SQL2000 開(kāi)發(fā),適合 WIN2000/WIN XP等平臺(tái)上運(yùn)行。(2) 賽揚(yáng)800 以上,128 內(nèi)存,至少 20M 硬盤(pán)空閑空間。(3) JRE1.5 以上的 java 運(yùn)行環(huán)境。(4) 客戶端要求必須有 SQL2000 的 JDBC 驅(qū)動(dòng)2.5.2 性能要求(1)客戶端客戶端與服務(wù)器端、客戶端與客戶端能夠進(jìn)行信息收發(fā)功能,信息內(nèi)容不能超過(guò) 200 字符,信息發(fā)送延遲時(shí)間小于 6 秒,否則信息發(fā)送失敗,并向用戶返回失敗原因。(2)服務(wù)器服務(wù)器端需要同時(shí)響應(yīng)最低 200 個(gè)用戶的訪問(wèn)量。3 需求分析在現(xiàn)代的社會(huì),網(wǎng)絡(luò)及時(shí)通信軟件在我們

12、的學(xué)習(xí)工作生活中越來(lái)越重要,它可以極大的提高工作效率,增強(qiáng)人與人之間的溝通。到目前為止,網(wǎng)絡(luò)及時(shí)通信軟件的用戶群體還在不斷的增長(zhǎng),各個(gè)大中型企業(yè)也都建立了自己的即時(shí)通訊平臺(tái)。 網(wǎng)絡(luò)即時(shí)通訊軟件也標(biāo)志著信息社會(huì)的來(lái)臨,它集聊天、視頻、傳送文件發(fā)布以及多種娛樂(lè)功能,已經(jīng)成為工作學(xué)習(xí)的有力的助手。3.1 系統(tǒng)總體功能4 本軟件模仿騰訊 QQ 制作,是基于局域網(wǎng)的即時(shí)通訊工具,開(kāi)發(fā)一個(gè)即時(shí)通訊軟件系統(tǒng),使其具有如下的功能:(1) 能夠在局域網(wǎng)內(nèi)進(jìn)行基本的聊天功能。(2) 在服務(wù)器端要求保存用戶注冊(cè)時(shí)候所填寫(xiě)的資料,如:帳號(hào)、昵稱、性別、用戶的姓名、電話、電子郵件、地址、郵編等等。(3) 提供個(gè)人的簡(jiǎn)介

13、、使用戶可以自己填寫(xiě)自己的基本情況、如:愛(ài)好、興趣、個(gè)性簽名等。(4) 提供用戶自己定義自己的形象功能。(5) 用系統(tǒng)的提示音來(lái)回應(yīng)用戶的各種操作。3.2 開(kāi)發(fā)工具以及使用的主要技術(shù)簡(jiǎn)介SWING 簡(jiǎn)介:SWING 技術(shù)是有 SUN 公司開(kāi)發(fā)的一套標(biāo)準(zhǔn)的基于 JAVA 平臺(tái)的圖形界面發(fā)工具,具有跨平臺(tái)的功能,在界面的美觀上也比它的第一代(AWT)有了很大的改善,并且提供了許多了簡(jiǎn)單高效的組件,使用戶可以快速的開(kāi)發(fā)出一個(gè)基于 JAVA 語(yǔ)言的一個(gè) GUI 程序,并且可以一次編譯到其他系統(tǒng)平臺(tái)也可以運(yùn)行。JAVA 多線程技術(shù)多線程技術(shù):多線程的各個(gè)線程看上去像是并行地獨(dú)自完成各自的工作,就像一臺(tái)一

14、臺(tái)計(jì)算機(jī)上運(yùn)行著多個(gè)處理機(jī)一樣。在多處理機(jī)計(jì)算機(jī)上實(shí)現(xiàn)多線程時(shí),它們確實(shí)可以并行工作,而且采用適當(dāng)?shù)姆謺r(shí)策略可以大大提高程序運(yùn)行的效率。而作為接受客戶端請(qǐng)求的服務(wù)器來(lái)說(shuō),必須使用多線程技術(shù)來(lái)接受不同時(shí)刻的請(qǐng)求,接收一個(gè)處理一個(gè),將其放入線程隊(duì)列,然后繼續(xù)監(jiān)聽(tīng)其他的請(qǐng)求。網(wǎng)絡(luò)通訊與網(wǎng)絡(luò)通訊與 Socket 編程編程:java 網(wǎng)絡(luò)編程中有兩種不同的通訊協(xié)議,分別是 TCP(面向連接)與 UDP(面向無(wú)連接) ,兩種協(xié)議各有優(yōu)缺點(diǎn):TCP:是 Transfer Control Protocol 的簡(jiǎn)稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。通過(guò) TCP 協(xié)議傳輸,得到的是一個(gè)順序的無(wú)差錯(cuò)的數(shù)據(jù)流。發(fā)

15、送方和接收方的成對(duì)的兩個(gè) socket 之間必須建立連接,以便在 TCP 協(xié)議的基礎(chǔ)上進(jìn)行通信,當(dāng)一個(gè) socket(通常都是 server socket)等待建立連接時(shí),另一個(gè)socket 可以要求進(jìn)行連接,一旦這兩個(gè) socket 連接起來(lái),它們就可以進(jìn)行雙向數(shù)據(jù)傳輸,雙方都可以進(jìn)行發(fā)送或接收操作。5 UDP:是 User Datagram Protocol 的簡(jiǎn)稱,是一種無(wú)連接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目的地的時(shí)間以及內(nèi)容的正確性都是不能保證的。JDBC 數(shù)據(jù)庫(kù)技術(shù):JDBC, 全稱為

16、Java DataBase Connectivity standard, 它是一個(gè)面向?qū)ο蟮膽?yīng)用程序接口(API), 通過(guò)它可訪問(wèn)各類(lèi)關(guān)系數(shù)據(jù)庫(kù)。JDBC 也是 java 核心類(lèi)庫(kù)的一部分。JDBC 的最大特點(diǎn)是它獨(dú)立于具體的關(guān)系數(shù)據(jù)庫(kù)。與 ODBC (Open Database Connectivity)類(lèi)似, JDBC API 中定義了一些 Java 類(lèi)分別用來(lái)表示與數(shù)據(jù)庫(kù)的連接(connections), SQL 語(yǔ)句(SQL statements), 結(jié)果集(result sets)以及其它的數(shù)據(jù)庫(kù)對(duì)象, 使得 Java 程序能方便地與數(shù)據(jù)庫(kù)交互并處理所得的結(jié)果。使用 JDBC, 所有

17、 Java 程序(包括Java applications , applets 和 servlet)都能通過(guò) SQL 語(yǔ)句或存儲(chǔ)在數(shù)據(jù)庫(kù)中的過(guò)程(stored procedures)來(lái)存取數(shù)據(jù)庫(kù)。SWING 界面設(shè)計(jì):java 的擴(kuò)展包,其中包括眾多的控件以及豐富的控件操作功能,使用戶可以簡(jiǎn)單的利用它畫(huà)出應(yīng)用程序的界面,結(jié)合 eclipse 3.0 帶的絕對(duì)定位類(lèi)包,可以設(shè)計(jì)出非常好看的用戶界面。JAVA 技術(shù)優(yōu)勢(shì):Java 是一個(gè)廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言 ,它是一種新的計(jì)算概念。首先 ,作為一種程序設(shè)計(jì)語(yǔ)言 ,它簡(jiǎn)單、面向?qū)ο?、不依賴于機(jī)器的結(jié)構(gòu)、具有可移植性、安全性、并且提供了并發(fā)的機(jī)制、具有

18、很高的性能。其次 ,它最大限度地利用了網(wǎng)絡(luò) ,Java 的小應(yīng)用程序 (applet)可在網(wǎng)絡(luò)上傳輸而不受 CPU 和環(huán)境的限制。另外 ,Java 還提供了豐富的類(lèi)庫(kù) ,使程序設(shè)計(jì)者可以很方便地建立自己的系統(tǒng)。Java 可移植特性與平臺(tái)無(wú)關(guān)的特性使 Java 程序可以方便地被移植到網(wǎng)絡(luò)上的不同機(jī)器時(shí) ,Java 的類(lèi)庫(kù)中也實(shí)現(xiàn)了與不同平臺(tái)的接口 ,使這些類(lèi)庫(kù)可以移植。另外,Java 編譯器是由 Java 語(yǔ)言實(shí)現(xiàn)的 ,Java 運(yùn)行時(shí)系統(tǒng)由標(biāo)準(zhǔn) C實(shí)現(xiàn) ,這使得 Java 系統(tǒng)本身也具有可移植性。3.2.1 數(shù)據(jù)庫(kù) Microsoft SQL2000 簡(jiǎn)介數(shù)據(jù)庫(kù)是數(shù)據(jù)管理的最新技術(shù),是計(jì)算機(jī)科

19、學(xué)的重要分支。數(shù)據(jù)庫(kù),顧名思義,是存放數(shù)據(jù)的倉(cāng)庫(kù)。為了有效的管理數(shù)據(jù)庫(kù),常常需要一些數(shù)據(jù)庫(kù)管理6系統(tǒng)(DBMS)為用戶提供對(duì)數(shù)據(jù)庫(kù)操作的各種命令、工具及方法,包括數(shù)據(jù)庫(kù)的建立和記錄的輸入、修改、檢索、顯示、刪除和統(tǒng)計(jì)等。SQL Server 是關(guān)系數(shù)據(jù)庫(kù),它除了支持傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)對(duì)象和特性外,也支持現(xiàn)今關(guān)系型數(shù)據(jù)庫(kù)常用的對(duì)象和存儲(chǔ)過(guò)程、視圖等。它支持目前關(guān)系型數(shù)據(jù)庫(kù)必定要支持標(biāo)準(zhǔn)查詢語(yǔ)言SQL(Structured Query Language) 。SQL Server 另外一個(gè)重要的特點(diǎn)是它支持?jǐn)?shù)據(jù)庫(kù)復(fù)制的功能,當(dāng)你在數(shù)據(jù)庫(kù)上執(zhí)行更新時(shí),可以將其更新結(jié)果傳到遠(yuǎn)程 SQL Server 相同

20、的數(shù)據(jù)庫(kù)上,讓兩邊數(shù)據(jù)庫(kù)的數(shù)據(jù)保持同步。SQL Server 在現(xiàn)今流行的 Client-Server 結(jié)構(gòu)中是扮演服務(wù)器端角色。它主要的職責(zé)是存儲(chǔ)數(shù)據(jù)和提供一套方法來(lái)管理這些數(shù)據(jù),并且相應(yīng)來(lái)自 Client的連接和數(shù)據(jù)存取需求。當(dāng)今社會(huì)是一個(gè)信息化的社會(huì),各行各業(yè)的數(shù)據(jù)信息都比較豐富,因此利用數(shù)據(jù)庫(kù)管理系統(tǒng)管理數(shù)據(jù)是十分必要的,圖書(shū)館中進(jìn)而體現(xiàn)的更加明顯,管理員可以從成千上萬(wàn)本書(shū)的數(shù)據(jù)庫(kù)中快速地檢索出讀者想要借閱的圖書(shū)等等。Microsoft SQL2000 數(shù)據(jù)庫(kù)是一個(gè)面向?qū)ο?,采用事件?qū)動(dòng)機(jī)制的新型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)它既可以通過(guò) ODBC 與其他數(shù)據(jù)庫(kù)(Sybase、Par

21、adox 等)相連實(shí)現(xiàn)數(shù)據(jù)的交換與共享,也可以與 Word 、Excel 等 Office 辦公軟件進(jìn)行數(shù)據(jù)信息交換與共享。3.2.23.2.2 eclipseeclipse 簡(jiǎn)介 Eclipse 是目前使用最廣泛的 JAVA IDE 開(kāi)發(fā)工具。Eclipse 一經(jīng)出現(xiàn)就以其快速,豐富的特性贏得了認(rèn)可,其主要的屬性有、快速的性能、重構(gòu)功能、快速修復(fù)錯(cuò)誤、調(diào)整、組織導(dǎo)入包、彈出窗口進(jìn)行代碼自動(dòng)裝配。由于功能強(qiáng)大,Eclipse 一度成為 Java IDE 領(lǐng)域的霸主。Eclipse 最初由 OTI 和 IBM 兩家公司的 IDE 產(chǎn)品開(kāi)發(fā)組創(chuàng)建,起始于 1999年 4 月。IBM 提供了最初的

22、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,最近 Oracle 也計(jì)劃加入到 Eclipse 聯(lián)盟中。 Eclipse Platform 是一個(gè)開(kāi)放的可擴(kuò)展的 IDE。Eclipse Platform 提供建造塊7和構(gòu)造并運(yùn)行集成軟件開(kāi)發(fā)工具的基礎(chǔ)。Eclipse Platform 允許工具建造者獨(dú)立開(kāi)發(fā)與他人工具無(wú)縫集成

23、的工具而無(wú)須分辨一個(gè)工具功能在哪里結(jié)束,而另一個(gè)工具功能在哪里開(kāi)始。Eclipse SDK(軟件開(kāi)發(fā)者包)是 3 個(gè) Eclipse 項(xiàng)目的子項(xiàng)目(Platform、JDT、PDE)所生產(chǎn)的組件合并,它們可以一次下載。這些部分在一起提供了一個(gè)具有豐富特性的開(kāi)發(fā)環(huán)境,允許開(kāi)發(fā)者有效地建造可以無(wú)縫集成到 Eclipse Platform 中的工具。Eclipse SDK 由 Eclipse 項(xiàng)目生產(chǎn)的工具和來(lái)自其它開(kāi)放源代碼的第三方軟件組合而成。Eclipse 項(xiàng)目生產(chǎn)的軟件以 CPL 發(fā)布,第三方組件有各自自身的許可協(xié)議。3.3 客戶機(jī)/服務(wù)期(C/S)工作原理 客戶機(jī)/服務(wù)器(C/S)將應(yīng)用程

24、序分為了三個(gè)部分,客戶機(jī)、服務(wù)器和數(shù)據(jù)庫(kù)部分。通常有服務(wù)器在網(wǎng)絡(luò)的某一個(gè)位置運(yùn)行,并接受來(lái)自客戶端的消息,然后服務(wù)器和數(shù)據(jù)庫(kù)進(jìn)行交互完成特定的功能,比如:數(shù)據(jù)讀取和存儲(chǔ),數(shù)據(jù)查詢等等,將得到的結(jié)果再發(fā)回給客戶機(jī)。在三層 C/S 中, 表示層 是應(yīng)用的用戶接口部分,它擔(dān)負(fù)著用戶與應(yīng)用間的對(duì)話功能。它用于檢查用戶從鍵盤(pán)等輸入的數(shù)據(jù),顯示應(yīng)用輸出的數(shù)據(jù)。為使用戶能直觀地進(jìn)行操作,一般要使用圖形用戶接口 (GUI),操作簡(jiǎn)單、易學(xué)易用。在變更用戶接口時(shí),只需改寫(xiě)顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。檢查的內(nèi)容也只限于數(shù)據(jù)的形式和值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。在 TCP/IP 網(wǎng)絡(luò)中兩個(gè)進(jìn)

25、程間的相互作用的主機(jī)模式是客戶機(jī)/服務(wù)器模式(Client/Server model)。該模式的建立基于以下兩點(diǎn):1、非對(duì)等作用;2、通信完全是異步的??蛻魴C(jī)/服務(wù)器模式在操作過(guò)程中采取的是主動(dòng)請(qǐng)示方式: 首先服務(wù)器方要先啟動(dòng),并根據(jù)請(qǐng)示提供相應(yīng)服務(wù)過(guò)程如下:(1) 打開(kāi)一個(gè)通信通道并告知本地主機(jī),在某一個(gè)公認(rèn)地址上接收客戶請(qǐng)求。(2) 等待客戶請(qǐng)求到達(dá)該端口。(3) 接收到重復(fù)服務(wù)請(qǐng)求,處理該請(qǐng)求并發(fā)送應(yīng)答信號(hào)。(4) 返回第二步,等待另一客戶請(qǐng)求(5) 關(guān)閉服務(wù)器。8客戶方:(1) 打開(kāi)通信通道,并連接到服務(wù)器所在主機(jī)的特定端口。(2) 向服務(wù)器發(fā)送服務(wù)請(qǐng)求報(bào)文,等待并接收應(yīng)答,繼續(xù)提出請(qǐng)

26、求。(3) 請(qǐng)求結(jié)束后關(guān)閉通信通道并終止。(4) 關(guān)閉 SOCKET 流。3.4 套接字(SOCKET)原理圖 圖 1 socket 套接字原理圖 Fig l Socket process3.5 系統(tǒng)邏輯模式本軟件采用了當(dāng)前流行的客戶端/服務(wù)器模式(C/S 模式) 。 各個(gè)客戶端采用 TCP/UDP 和服務(wù)器相連接,在局域網(wǎng)中采用的是 TCP 協(xié)議和服務(wù)器連接。 TCP 是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。通過(guò) TCP 協(xié)議傳輸,得到的是一個(gè)順序的無(wú)差錯(cuò)的數(shù)據(jù)流。因此在安全性要求高的局域網(wǎng)中應(yīng)用中 TCP 協(xié)議比 UDP 有著很大的優(yōu)勢(shì)。9圖 2 Socket 軟件總體結(jié)構(gòu)圖Fig 2 Str

27、ucture of The Software base on socket3 概要設(shè)計(jì)經(jīng)過(guò)對(duì)即時(shí)通訊軟件了系統(tǒng)進(jìn)行詳盡的了解和分析,該系統(tǒng)應(yīng)包括,客戶端、服務(wù)器和數(shù)據(jù)庫(kù)三個(gè)主要部分。(1) 客戶端模塊主要是提供給用戶一系列的功能,如:帳號(hào)注冊(cè)、發(fā)送消息查找好友、添加好友、刪除好友等功能。(2) 數(shù)據(jù)庫(kù)模塊主要是存儲(chǔ)和用戶相關(guān)的信息,如:基本資料,離線消息、10好友列表等功能。(3) 服務(wù)期模塊的主要功能對(duì)收到的客戶端的消息進(jìn)行判斷,并做相應(yīng)的處理,如:轉(zhuǎn)發(fā)消息、讀取離線消息、刪除好友、添加好友等操作。 3.1 客戶端 客戶端應(yīng)包括以下的幾個(gè)的功能模塊來(lái)實(shí)現(xiàn)其主要功能,如圖 3 所示。 客戶端用

28、戶注冊(cè)(WEB)刪除好友發(fā)送消息查找好友添加好友圖 3客戶端功能描述圖Fig 3 Client function3.1.1 用戶注冊(cè)功能模塊 用戶在填寫(xiě)了注冊(cè)信息后,WEB 網(wǎng)頁(yè)向服務(wù)器請(qǐng)求注冊(cè),服務(wù)器接受的請(qǐng)求之后把用戶的基本信息發(fā)給數(shù)據(jù)庫(kù)并獲得數(shù)據(jù)庫(kù)產(chǎn)生的一個(gè)注冊(cè) ID,并將此 ID返回給用戶。 客戶端提交注冊(cè)信息服務(wù)器做相應(yīng)的處理返回客戶的注冊(cè) ID 圖 4用戶注冊(cè)功能圖Fig 4 Register function113.1.2 發(fā)送消息功能模塊 用戶發(fā)送消息功能如下圖 5 所示,模塊的主要功能是用戶之間相互傳送數(shù)據(jù),服務(wù)期轉(zhuǎn)發(fā)收到的用戶發(fā)出的信息。 客戶端用戶向好友發(fā)送消息查詢?cè)摵糜?/p>

29、是否在先,轉(zhuǎn)發(fā)消息或者存儲(chǔ)這條消息圖 5發(fā)送消息功能Fig 5 Send messages function3.1.3 查找好友功能模塊 該模塊的主要功能是用戶查詢其他好友,服務(wù)期端按照客戶端選擇的查找類(lèi)型顯示在數(shù)據(jù)庫(kù)中查到的數(shù)據(jù)。如下圖 6 所示。 客戶端用戶查找好友查詢當(dāng)前在線的好友顯示當(dāng)前在先的好友圖 6查找好友功能Fig 6 Search friends function3.1.4 添加好友模塊 該模塊的主要功能是用戶相互之間添加為好友,以實(shí)現(xiàn)系統(tǒng)提供的其他動(dòng)能,該模塊需要和好友查找模塊相結(jié)合才能夠完成添加好友的功能。如下圖 7所示??蛻舳擞脩籼砑雍糜迅鶕?jù)選擇的網(wǎng)友添加到好友列表顯示增

30、加了好友的新的列表圖 7添加好友功能12Fig 7 Add friends function3.1.5 刪除好友模塊 該模塊的主要功能是用戶刪除他不想要的好友,如下圖 8 所示,該功能根據(jù)用戶的要求刪除好友,更改該用戶的好友列表,給用戶發(fā)送回饋信息。 客戶端用戶請(qǐng)求刪除好友刪除用戶選擇的好友,更改該用戶的好友列表返回給客戶端消息,客戶端做出響應(yīng)的動(dòng)作圖 8刪除好友功能圖Fig 8 Delete friends function3.1.6 修改個(gè)人信息模塊 該模塊的主要功能是用戶更改其以前注冊(cè)時(shí)填寫(xiě)的部分或全部基本信息,如下圖 9 所示??蛻舳擞脩粽?qǐng)求修改個(gè)人的信息,填寫(xiě)相關(guān)的內(nèi)容服務(wù)期修改用戶

31、的信息返回給客戶端消息圖 9修改個(gè)人信息功能Fig 9 Update users basic information3.2 服務(wù)器 服務(wù)期端應(yīng)包括以下幾個(gè)主要的功能模塊用來(lái)處理收到客戶端的各種請(qǐng)求。如下圖 10 所示。 13服務(wù)器用戶登錄模塊用戶注冊(cè)模塊添加、刪除好友模塊轉(zhuǎn)發(fā)數(shù)據(jù)模塊查詢數(shù)據(jù)模塊圖 10服務(wù)器功能概圖Fig 10 Server Main function3.2.13.2.1 用戶登錄模塊設(shè)計(jì)用戶登錄模塊設(shè)計(jì) 用戶登錄模塊的設(shè)計(jì)包括了用戶界面的設(shè)計(jì)和用戶帳號(hào)和密碼的驗(yàn)證程序編寫(xiě)。本軟件的程序界面由我實(shí)習(xí)時(shí)候的同事楊純(湖南生力科技有限公司)幫助設(shè)計(jì),軟件整體顯得簡(jiǎn)潔,美觀。程序部

32、分的流程圖如下圖 11 所示。14FT登陸請(qǐng)求取得在線好友列表,更新在線的狀態(tài),登陸成功顯示程序主界面結(jié)束開(kāi)始身份驗(yàn)證讀取好友的離線消息圖 11用戶登錄流程圖Fig 11 User register proccess3.2.23.2.2 新用戶注冊(cè)新用戶注冊(cè)模塊設(shè)計(jì)模塊設(shè)計(jì) 該系統(tǒng)的注冊(cè)模塊是用戶使用改系統(tǒng)的唯一入口,所有的用戶必須經(jīng)過(guò)注冊(cè)才能使用該系統(tǒng)。用戶訪問(wèn)注冊(cè)模塊的 WEB 頁(yè)面時(shí),系統(tǒng)要求用戶按照用戶注冊(cè)信息的格式輸入用戶的基本信息,若用戶輸入的信息無(wú)誤,則返回在服務(wù)期中生成的帳號(hào),否則返回前一頁(yè)要求用戶重新輸入,直至用戶輸入的信息準(zhǔn)確無(wú)誤為止。如下圖 12 所示。15FT填寫(xiě)注冊(cè)信

33、息請(qǐng)求注冊(cè)檢查信息是否符合要求在數(shù)據(jù)庫(kù)中生成新的 ID,并返回給用戶結(jié)束開(kāi)始圖 12用戶注冊(cè)流程圖Fig 12 User register function3.2.33.2.3 查找網(wǎng)友查找網(wǎng)友模塊設(shè)計(jì)模塊設(shè)計(jì)查找網(wǎng)友模塊的目的是幫助用戶快速找到想要添加的好友。本系統(tǒng)采用了精確查找和查找全部在線號(hào)碼兩種查找方式,用戶輸入了其他用戶的 ID 或者不輸入直接查詢就可以搜索到相應(yīng)的結(jié)果。如下圖 13 所示。 16精確查找開(kāi)始客戶端請(qǐng)求查詢網(wǎng)友判斷查找方式查找所有的網(wǎng)友返回所有網(wǎng)友的列表列出指定號(hào)碼網(wǎng)友的信息結(jié)束圖 13查找網(wǎng)友流程圖Fig 13 Find friends process3.2.4 添

34、加好友模塊設(shè)計(jì)添加好友模塊是讓用戶之間相互加為好友,該模塊是用戶傳送數(shù)據(jù)的基礎(chǔ)模塊之一。該操作涉及到數(shù)據(jù)庫(kù)中的 JFriend 數(shù)據(jù)表以及調(diào)用數(shù)據(jù)庫(kù)上的存儲(chǔ)過(guò)程,來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的表字段的插入操作,如下圖 14 所示。17TFTF開(kāi)始用戶請(qǐng)求添加好友是否查找到好友?用戶選擇想要添加的好友發(fā)出添加請(qǐng)求加入好友通知服務(wù)器更改好友列表結(jié)束被加的用戶是否同意圖 14添加好友流程圖Fig 14 Add friends process3.2.5 用戶之間發(fā)送數(shù)據(jù)模塊設(shè)計(jì) 該模塊的主要功能就是接收和發(fā)送消息,用戶消息的編碼方式采用了和具體的操作系統(tǒng)無(wú)關(guān)的(UTF-8)格式,此編碼可以被多個(gè)操作系統(tǒng)準(zhǔn)確的解析,由

35、此可以實(shí)現(xiàn)消息的跨平臺(tái)傳輸??蛻舳耸盏椒?wù)期轉(zhuǎn)發(fā)來(lái)的消息時(shí)能夠準(zhǔn)確無(wú)誤的解析編碼,并將消息正確的顯示在消息對(duì)話框中。如下圖 15 所示。18開(kāi)始服務(wù)器接收到某個(gè)客戶端給其他用戶發(fā)送消息判斷目的的號(hào)碼是否在線將接收到的消息轉(zhuǎn)發(fā)給對(duì)應(yīng)的接收端的客戶將此消息保存到數(shù)據(jù)庫(kù)TF結(jié)束圖 15用戶間發(fā)送消息圖Fig 15 Send message process3.3 數(shù)據(jù)庫(kù)設(shè)計(jì) 在一個(gè)軟件系統(tǒng)中數(shù)據(jù)庫(kù)的設(shè)計(jì)和應(yīng)用十分重要,數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率、以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的設(shè)計(jì)數(shù)據(jù)庫(kù)是提高軟件性能的一個(gè)重要途徑。用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢,這就要求數(shù)據(jù)庫(kù)結(jié)構(gòu)

36、能充分滿足各種信息的輸出和輸入。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)處理的流程。提供詳細(xì)的數(shù)據(jù)字典,為以后的功能修改打下良好的基礎(chǔ)。 根據(jù)用戶對(duì)網(wǎng)絡(luò)聊天軟件的需求,設(shè)計(jì)如下的表: (1) 用戶基本信息表:保存用戶的基本資料信息(2) 好友列表:保存用戶的好友列表信息(3) 消息表:用戶間相互發(fā)送的消息信息19(4) 圖片表:保存用戶自定義的圖片信息3.3.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì) 根據(jù)以上得出的信息,規(guī)劃出數(shù)據(jù)庫(kù)的實(shí)體有,用戶、好友、消息、圖片等等。 (1) E-R 圖好友消息圖片UserID用戶LoginPicIDloginPicNameFromDateUserPwdsexageUserIPStatusP

37、icID1N111NUpdateDateMessageIDMyJICQMessageContentMessageHeadFriendJICQ管理發(fā)送擁有圖 16數(shù)據(jù)庫(kù) E-R 圖Fig 16 Database E-R chart3.3.2 數(shù)據(jù)表設(shè)計(jì)(1) 用戶基本信息表表20好友信息數(shù)據(jù)表的主要功能在于存放好友的基本資料書(shū)和相關(guān)信息,它包括:用戶 ID、密碼、呢稱、性別、國(guó)家、城市、省市、密碼保護(hù)問(wèn)題密保護(hù)答案、E_MAIL、真實(shí)姓名、等等。表 1 用戶基本信息表Table 1 Basic information of users字段名稱 字段類(lèi)型 字段大小 索引 是否必須填寫(xiě)ShowNam

38、e 文本 20 無(wú) Not nullAge 數(shù)字 2 無(wú) 可選 Sex 文本 2 無(wú) 可選Password 文本 8 無(wú) Not nullCountry 文本 20 無(wú) 可選Province 文本 10 無(wú) 可選City 文本 10 無(wú) 可選Question 文本 40 無(wú) 可選Answer 文本 40 無(wú) 可選ProtectedEmail 文本 40 無(wú) 可選Identify 文本 20 無(wú) 可選TrueName 文本 20 無(wú) 可選Blood 文本 2 無(wú) 可選College 文本 20 無(wú) 可選Occupation 文本 10 無(wú) 可選HomePage 文本 20 無(wú) 可選Comment

39、 文本 120 無(wú) 可選Status 數(shù)字 4 無(wú) 可選CurrentIP 文本 15 無(wú) 可選CurrentPort 數(shù)字 16 無(wú) 可選Image 數(shù)字 4 無(wú) 可選Verify 數(shù)字 8 無(wú) 可選(2) 好友列表 好友列表中包括了當(dāng)前用戶的所有的好友號(hào)碼。表 2 好友列表Table 2 Friends table字段名稱 字段類(lèi)型 字段大小 索引 是否必須填寫(xiě)UserID 文本 8 無(wú) Not nullFriendID 文本 8 無(wú) Not nullRole 數(shù)字 4 無(wú) 可選(3)消息表 該表中包括用戶發(fā)給不在線的好友的消息。21表 3 消息信息表Table 3 Message tab

40、le字段名稱 字段類(lèi)型 字段大小 索引 是否必須填寫(xiě)MessageID 文本 16 無(wú) Not nullMyJICQ 文本 6 無(wú) Not nullFriendJICQ 數(shù)字 6 無(wú) 可選MessageHead 文本 6 無(wú) not nullMessageContent 文本 6 無(wú) not nullFlag 文本 100 無(wú) not null(4) 圖片表圖片表主要的功能是存儲(chǔ)用戶定義的頭像圖片的文件名信息, 表 4 圖片表Table 4 Picture table字段名稱 字段類(lèi)型 字段大小 索引 是否必須填寫(xiě)LoginPicID 文本 8 無(wú) Not nullloginPicName 文

41、本 8 無(wú) Not nullFromDate 文本 8 無(wú) not nullUpdateDate 文本 8 無(wú) not null3.3.3 數(shù)據(jù)字典(1) 聊天信息字典表 5 聊天信息字典Table 5 chat message table名字聊天信息表描述定義位置傳遞服務(wù)器從客戶端讀出來(lái)的聊天信息聊天信息表=HisJICQ + MyJICQ + Head + messageContent客戶端發(fā)送的消息服務(wù)器轉(zhuǎn)發(fā)送的消息 22(2) 用戶圖片字典表 6 用戶圖片字典Table 6 users Picture名字用戶圖片信息描述定義位置客戶端登錄時(shí)所顯示的圖片 ID用戶圖片信息= LoginP

42、icID + loginPicName+ FromDate + UpdateDate客戶端登錄 (3) 好友字典表 7 好友字典Table 7 users friends名字好友列表描述定義位置客戶端登錄后,服務(wù)器要傳回好友列表信息用戶圖片信息= UserID + FriendID+ role 客戶端登錄,服務(wù)器返回消息 4 詳細(xì)設(shè)計(jì)4.1 服務(wù)器端服務(wù)器的功能主要是對(duì)用戶基本資料和聊天信息進(jìn)行存儲(chǔ)。它實(shí)現(xiàn)了與數(shù)據(jù)庫(kù)交互,和客戶端通信,處理接收到了各種客戶端的請(qǐng)求并將結(jié)果返回給客戶端。4.1.1 服務(wù)器建立和啟動(dòng)模塊該模塊的功能是建立在服務(wù)器的 7890 端口服務(wù)器的 SOCKET 監(jiān)聽(tīng),并且

43、在該端口不斷的監(jiān)聽(tīng),直到接受客戶端的請(qǐng)求并做響應(yīng)處理,同時(shí)提示用戶服務(wù)器已經(jīng)啟動(dòng)。在端口的選用是應(yīng)避免使用系統(tǒng)預(yù)留的端口,否則會(huì)導(dǎo)致軟件使23用的端口和系統(tǒng)的端口發(fā)生沖突,影響軟件的正常使用。int PORT = 7890; listen=new ServerSocket(PORT); /在服務(wù)器的 7890 端口建立監(jiān)聽(tīng)System.out.println(listen is + listen.toString(); /提示用戶服務(wù)器已經(jīng)啟動(dòng)connect.start(); /服務(wù)器端線程啟動(dòng)/監(jiān)聽(tīng)客戶端的連接請(qǐng)求,并且把已經(jīng)建立的連接打印在控制臺(tái)上。trywhile(true) /始終監(jiān)聽(tīng)

44、來(lái)自網(wǎng)絡(luò)端口的信息Socket client=listen.accept(); /在 7890 端口等待用戶的消息System.out.println(已連接的客戶機(jī):+client.getInetAddress()+client.getInetAddress().getHostName()+n); 4.1.2 數(shù)據(jù)庫(kù)交互模塊該模塊的主要功能是和數(shù)據(jù)庫(kù)建立連接,在接受到客戶端相應(yīng)請(qǐng)求時(shí)調(diào)用數(shù)據(jù)庫(kù)上相應(yīng)的存儲(chǔ)過(guò)程,來(lái)完成數(shù)據(jù)查詢、更新、插入等操作。(1) 數(shù)據(jù)庫(kù)連接代碼該部分代碼的功能是和數(shù)據(jù)庫(kù)建立連接。 public static Connection getConnection()Conne

45、ction conn=null;System.out.println(start to connect(s) DB);tryString driver=com.microsoft.jdbc.sqlserver.SQLServerDriver;/加載數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序String 、 、url=jdbc:microsoft:sqlserver:/172.29.141.105:1433;DatabaseName=JICQ;Class.forName(driver).newInstance();conn=DriverManager.getConnection(url,sa,sa);/和數(shù)據(jù)庫(kù)建立連接)

46、;(2)查詢數(shù)據(jù)、更新數(shù)據(jù)、調(diào)用數(shù)據(jù)庫(kù)上的存儲(chǔ)過(guò)程的部分代碼該部分的數(shù)據(jù)庫(kù)查詢、更新的代碼和程序的代碼實(shí)現(xiàn)了分離,和數(shù)據(jù)庫(kù)相關(guān)的操作的代碼寫(xiě)成了存儲(chǔ)過(guò)程,該方法的主要優(yōu)點(diǎn)是可以靈活的改變數(shù)據(jù)查詢、更新的內(nèi)容而不必改變程序的代碼。24int qqNum=Integer.parseInt(JICQ);CallableStatement proc = conn.prepareCall(call proc_selectAddMePerson(?); /調(diào)用存儲(chǔ)過(guò)程proc.setInt(1,qqNum); /設(shè)置問(wèn)號(hào)的參數(shù)rs=proc.executeQuery();/ conn.close();(3

47、)判斷用戶是否在線的部分代碼: 用戶登錄的時(shí)候會(huì)修改數(shù)據(jù)庫(kù)中的用戶基本信息表中用來(lái)表示用戶是否在線的數(shù)據(jù)(1 表示用戶不在線,2 表示用戶隱身,3 表示用戶空閑),判斷用戶是否在線只需要在數(shù)據(jù)庫(kù)中查找并判斷該數(shù)據(jù)的值即可。public boolean isOnline(String JICQ)tryint qqNum=Integer.parseInt(JICQ);Statement stment=conn.createStatement();ResultSet rs=stment.executeQuery(select JStatus from JUsers where JICQ=+qqNum

48、+);rs.next(); /數(shù)據(jù)查找int JStatus=rs.getInt(JStatus);if(JStatus=0)return false;catch(Exception ex)ex.printStackTrace();return true;(4) 添加好友用戶發(fā)送添加好友的格式數(shù)據(jù),其中包括了添加好友操作的標(biāo)志(ADDFRIEND)、兩個(gè)用戶的 JICQ 號(hào)碼和發(fā)送添加消息的附加信息到服務(wù)器,服務(wù)器提取并檢查被加的號(hào)碼的用戶是否在線,假如在線,就給發(fā)送添加為好友的請(qǐng)求,假如被加的號(hào)碼的用戶不在線,則就將此消息存儲(chǔ)到數(shù)據(jù)庫(kù)中,直到下次該號(hào)碼的用戶上線時(shí)就立即發(fā)送。同時(shí)在添加好友的

49、過(guò)程中還必須得到被加的用戶同意才能加為好友。public int insertFriends(int JICQ,int hisJICQ,int FriendTypeID)int flag=0;tryCallableStatement proc = conn.prepareCall(call proc_insertFriends(?,?,?); /調(diào)用數(shù)據(jù)庫(kù)中的proc_insertFriends 存儲(chǔ)過(guò)程25proc.setInt(1,JICQ); /設(shè)置該存儲(chǔ)過(guò)程的參數(shù)proc.setInt(2,hisJICQ); /設(shè)置該存儲(chǔ)過(guò)程的參數(shù)proc.setInt(3,FriendTypeID)

50、; /設(shè)置該存儲(chǔ)過(guò)程的參數(shù) flag=proc.executeUpdate();/conn.close();catch(Exception ex)ex.printStackTrace();return flag;4.1.3 處理客戶端請(qǐng)求模塊 該模塊的主要功能是接收客戶端的請(qǐng)求并做相應(yīng)的處理。如:客戶端登錄、給好友發(fā)送消息、刪除好友、添加好友等等。例如:當(dāng)服務(wù)器接收到客戶端發(fā)送來(lái)的登錄消息時(shí),就將該消息交給服務(wù)器的用來(lái)處理用戶登錄的代碼進(jìn)行處理,處理可戶端用戶登錄的代碼如下:if(key.equals(PEOPLE) /處理客戶端的登錄請(qǐng)求tryString JNUM=(String)stk.

51、nextElement();this.JICQ=JNUM;for(int i=0;i0|this.tfShowName.getText().trim().length()0) sql=select * from JUsers where JICQ like % + vJIcq +% and JShowName like % +vShowName+%; 4.2.7 個(gè)人信息模塊 該模塊的主要功能是修改用戶的基本資料信息。在該模塊中填要修改的信息,然后單擊更新按鈕。如圖 21 所示。31圖 21用戶基本資料界面Fig 21 Users basic information 在獲取到用戶輸入的信息并校

52、驗(yàn)無(wú)誤后在數(shù)據(jù)庫(kù)上執(zhí)行數(shù)據(jù)更新的SQL語(yǔ)句來(lái)實(shí)現(xiàn)個(gè)人信息的更新。intint rs=stment.executeUpdate(update JUsers set JShowName=+JShowName+,JTrueName=+JTrueName+,JAge=+JAge+,JSex=+JSex+,JCountry=+JCountry+,JProvince=+JProvince+,JCity=+JCity+,JEmail=+JEmail+,JUnderWrite=+JUnderWrite+,JProfession=+JProfession+,JStar=+JStar+,JXuexing=+JXu

53、exing+,JGradute=+JGradute+,JAddress=+JAddress+,JPostalcode=+JPostalcode+,JPersonalPage=+JPersonalPage+,JPersonalInfo=+JPersonalInfo+ where JICQ=+JICQ);returnreturn rs;catchcatch(Exception ex)System.out.println(ex.toString();returnreturn -1;5 系統(tǒng)打包服務(wù)器的部署與運(yùn)行 32數(shù)據(jù)庫(kù)服務(wù)器聊天服務(wù)器(內(nèi)網(wǎng))客戶端 A(內(nèi)網(wǎng))客戶端 B(內(nèi)網(wǎng))客戶端 C圖 22

54、聊天軟件部署圖Fig 22 Chat software deploy5 總結(jié)本軟件實(shí)現(xiàn)了在局域網(wǎng)內(nèi)的即時(shí)通信,同時(shí)提供了多種豐富的功能,如:修改基本資料、自定義頭像、顯示 QQ 繡等,軟件的界面也比較美觀。本軟件主要特點(diǎn)是客戶端和服務(wù)器采用了 SOCKET 協(xié)議進(jìn)行通訊,使在同一個(gè)局域網(wǎng)內(nèi)的多個(gè)客戶端之間的可以進(jìn)行通信??蛻舳撕头?wù)器采用 TCP 相連接,保證了在局域網(wǎng)出錯(cuò)機(jī)率較高的情況下也能夠提供可靠的信息傳輸。從服務(wù)器中分離出了大量的與操作數(shù)據(jù)庫(kù)相關(guān)的代碼,使服務(wù)器和數(shù)據(jù)庫(kù)的關(guān)聯(lián)降到最低。數(shù)據(jù)庫(kù)在存儲(chǔ)用戶的各種信息的同時(shí)還提供大量的存儲(chǔ)過(guò)程的代碼供服務(wù)器調(diào)用,若需要更改其中的數(shù)據(jù)來(lái)適應(yīng)新的需求,只需要修改數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程即可,而無(wú)需修改服務(wù)器端的程序代碼,使本軟件的適應(yīng)性有了很大的提高。本系統(tǒng)也有不足之處,在以后還需要加入語(yǔ)音聊天和視頻聊天功能。在服務(wù)器端需要加入后臺(tái)管理的功能,方便系統(tǒng)管理員管理本系統(tǒng)的各種數(shù)據(jù)。在用戶注冊(cè) ID 時(shí)沒(méi)有進(jìn)行適當(dāng)?shù)目刂?,使用戶可以在同一時(shí)間同一地點(diǎn)注冊(cè)多個(gè)33號(hào)碼,同時(shí)對(duì)數(shù)據(jù)庫(kù)中的用戶 ID 也沒(méi)有定時(shí)的清理的功能,使得在數(shù)據(jù)庫(kù)中可能存在長(zhǎng)期不用的用戶 ID。在軟件的附加功能方面還需提供文件傳輸以及用戶和好友游戲等功能。參考文獻(xiàn)1 馮博,應(yīng)群.面向?qū)ο蟮?JAVA 網(wǎng)絡(luò)編程M.北京:清華大學(xué)出版社,200

溫馨提示

  • 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)論