基于LINUX聊天客戶端模塊設(shè)計與實現(xiàn)論文_第1頁
基于LINUX聊天客戶端模塊設(shè)計與實現(xiàn)論文_第2頁
基于LINUX聊天客戶端模塊設(shè)計與實現(xiàn)論文_第3頁
基于LINUX聊天客戶端模塊設(shè)計與實現(xiàn)論文_第4頁
基于LINUX聊天客戶端模塊設(shè)計與實現(xiàn)論文_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、xx學(xué)院本 科 生 畢 業(yè) 論 文( 屆)題 目: 基于linux聊天客戶端模塊設(shè)計與實現(xiàn)系 別: 計算機(jī)科學(xué)系 專 業(yè): 計算機(jī)科學(xué)與技術(shù) 班 級: 作者姓名: 學(xué)號: 指導(dǎo)教師: 職稱: 學(xué)歷: 論文成績: 20 年 月目 錄摘 要1abstract1緒 論3第一章 概述41.1 linux的網(wǎng)絡(luò)功能與編程41.1.1 linux概述41.1.2 linux的特點(diǎn)51.1.3 linux的網(wǎng)絡(luò)功能71.1.4 linux提供的網(wǎng)絡(luò)服務(wù)71.2 tcp/ip協(xié)議簡介81.3 socket的簡介91.4 arm的簡介9第二章 規(guī)劃設(shè)計112.1 課題來源112.2 需求分析11第三章 系統(tǒng)分析

2、與設(shè)計方案133.1 聊天系統(tǒng)客戶端的總體設(shè)計要點(diǎn)133.2 聊天系統(tǒng)客戶端的設(shè)計步驟及功能模塊劃分133.3 聊天系統(tǒng)客戶端各功能模塊14第四章 系統(tǒng)設(shè)計與實現(xiàn)234.1 開發(fā)環(huán)境工具234.2 硬件環(huán)境244.3 網(wǎng)站功能模塊的測試26第五章 總結(jié)315.1 畢業(yè)設(shè)計總結(jié)和展望315.2 經(jīng)驗和感想31結(jié) 束 語33參考文獻(xiàn)34指導(dǎo)教師評語閱卷人評語 基于linux聊天客戶端模塊設(shè)計與實現(xiàn)計算機(jī)科學(xué)系 20 級 班 摘 要:聊天室是一種廣泛應(yīng)用于網(wǎng)絡(luò)的聊天方式,操作非常簡單,功能也很豐富??梢允褂枚喾N編程類語言來設(shè)計和開發(fā)出功能比較完善的網(wǎng)絡(luò)聊天室。整個項目介紹在linux操作系統(tǒng)下設(shè)計和

3、實現(xiàn)的一個網(wǎng)絡(luò)聊天室客戶端的全過程。本系統(tǒng)采用c/s構(gòu)架設(shè)計,使用了linux下c編程,結(jié)合qt編譯語言,開發(fā)出簡潔美觀和布局合理的用戶gui界面;利用了socket網(wǎng)絡(luò)開發(fā)技術(shù)實現(xiàn)客戶端和服務(wù)器端的連接訪問;通過對數(shù)據(jù)流操作的合理解析,實現(xiàn)信息傳遞、接受和數(shù)據(jù)保存。同時,采用多線程、多任務(wù)的設(shè)計思想,開發(fā)出性能穩(wěn)定,功能全面的服務(wù)器。本篇論文介紹客戶端的實現(xiàn),主要功能包括:實現(xiàn)聊天室的登錄、注冊、群聊以及私聊。最后將整個客戶端程序移植到arm開發(fā)板上,在板子上完整的實現(xiàn)系統(tǒng)的功能。使本聊天室客戶端可以在移動設(shè)備上實現(xiàn)功能、擺脫了傳統(tǒng)的pc機(jī)限制。關(guān)鍵詞:聊天室;linux系統(tǒng);qt語言;so

4、cket;armthe design and emplementation of chatroom client based on linux class ,grade ,computer of scienceabstract: chat room is a wide range of applications in the network chat mode, the operation is simple, the function is also very rich. you can use a variety of programming language to design and

5、develop a function more perfect network chat room. the entire project is introduced in the linux operating system design and implementation of a network chat room client process. this system adopts c / s architecture design, the use of linux c programming, with qt language compiler, a simple and rea

6、sonable layout of the user interface gui; use of socket web development technology to realize the connection between the client and server access; through the data stream operation of rational analysis, the realization of information transmission, receiving and data save. at the same time, multi-thr

7、eading, task design, developed a stable performance, fully functional server. this paper introduces the realization of the client, the main function includes: the realization of the chat room login, registration, group chat and private chat. finally the client program to transplanted into the arm de

8、velopment board, the board on the full implementation of the function of the system. the chat client allows mobile devices to achieve function, get rid of the traditional pc machine limited.keyword: chat room; linux; qt; socket;arm2緒 論linux 操作系統(tǒng)作為一個開源的操作系統(tǒng)被越來越多的人所應(yīng)用,基于linux系統(tǒng)的聊天系統(tǒng)優(yōu)勢在于使用方便快捷,易學(xué)易懂,具有即

9、時性。尤其是對于企事業(yè)單位具有可靠性,能夠?qū)崿F(xiàn)消息的即時發(fā)布與收集。不需使用互聯(lián)網(wǎng),只需局域網(wǎng)既可實現(xiàn)通訊,省時省力。另外該系統(tǒng)對硬件的需求很低,不影響電腦的其他工作。因此制作一個linux 操作系統(tǒng)下的擁有人性化界面的實時通訊工具,將給那些剛剛接觸linux操作系統(tǒng)的用戶帶來極大的方便,而且通過設(shè)計這樣的一個應(yīng)用程序還能更好的學(xué)習(xí)網(wǎng)絡(luò)編程知識和掌握linux平臺上應(yīng)用程序設(shè)計開發(fā)的過程,將大學(xué)四年所學(xué)知識綜合運(yùn)用,以達(dá)到檢驗學(xué)習(xí)成果的目的。第一章 概述1.1 linux的網(wǎng)絡(luò)功能與編程 1.1.1 linux概述 linux是一種自由和開放源碼的類unix操作系統(tǒng)。目前存在著許多不同的lin

10、ux,但它們都使用了linux內(nèi)核。linux可安裝在各種計算機(jī)硬件設(shè)備中,從手機(jī)、平板電腦、路由器和視頻游戲控制臺,到臺式計算機(jī)、大型機(jī)和超級計算機(jī)。linux是一個領(lǐng)先的操作系統(tǒng),世界上運(yùn)算最快的10臺超級計算機(jī)運(yùn)行的都是linux操作系統(tǒng)。嚴(yán)格來講,linux這個詞本身只表示linux內(nèi)核1,但實際上人們已經(jīng)習(xí)慣了用linux來形容整個基于linux內(nèi)核,并且使用gnu 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。linux 操作系統(tǒng)是unix 操作系統(tǒng)的一種克隆系統(tǒng)。它誕生于1991 年的10 月5 日(這是第一次正式向外公布的時間)。以后借助于internet 網(wǎng)絡(luò),并經(jīng)過全世界各地計算機(jī)愛好者

11、的共同努力下,現(xiàn)已成為今天世界上使用最多的一種unix 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。 linux 操作系統(tǒng)的誕生、發(fā)展和成長過程始終依賴著以下五個重要支柱:unix 操作系統(tǒng)、minix 操作系統(tǒng)、gnu 計劃、posix 標(biāo)準(zhǔn)和internet 網(wǎng)絡(luò)。linux 操作系統(tǒng)剛開始時并沒有被稱作linux,linus 給他的操作系統(tǒng)取名為freax,其英文含義是怪誕的、怪物、異想天開等意思。在他將新的操作系統(tǒng)上載到ftp,funet。fi服務(wù)器上時,管理員ari lemke很不喜歡這個名稱。他認(rèn)為既然是linus 的操作系統(tǒng)就取其諧音linux 作為該操作系統(tǒng)的目錄吧,于是linux

12、這個名稱就開始流傳下來。 在linus 的自傳just for fun一書中,linus 解釋說:坦白地說,我從來沒有想到過要用linux 這個名稱發(fā)布這個操作系統(tǒng),因為這個名字有些太自負(fù)了。而我為最終發(fā)布版準(zhǔn)備的是什么名字呢freax。實際上,內(nèi)核代碼中某些早期的makefile - 用于描述如何編譯源代碼的文件 - 文件中就已經(jīng)包含有freax這個名字了,大約存在了半年左右。但其實這也沒什么關(guān)系,在當(dāng)時還不需要一個名字,因為我還沒有向任何人發(fā)布過內(nèi)核代碼。而ari lemke,他堅持要用自己的方式將內(nèi)核代碼放到ftp 站點(diǎn)上,并且非常不喜歡freax 這個名字。他堅持要用現(xiàn)在這個名字(li

13、nux),我承認(rèn)當(dāng)時我并沒有跟他多爭論。但這都是他取的名字。所以我可以光明正大地說我并不自負(fù),或者部分坦白地說我并沒有本位主義思想。但我想好吧,這也是個好名字,而且以后為這事我總能說服別人,就像我現(xiàn)在做的這樣。1.1.2linux的特點(diǎn) linux的主要特點(diǎn):linux之所以能在嵌人式系統(tǒng)領(lǐng)域取得如此輝煌的成績,與其自身的優(yōu)良特性是分不開的。與其他操作系統(tǒng)相比,linux具有以下一系列顯著的特點(diǎn)。1.模塊化程度高linux的內(nèi)核設(shè)計非常精巧,分成進(jìn)程調(diào)度、內(nèi)存管理、進(jìn)程間通信、虛擬文件系統(tǒng)和網(wǎng)絡(luò)接口五大部分;其獨(dú)特的模塊機(jī)制可根據(jù)用戶的需要,實時地將某些模塊插入或從內(nèi)核中移走,使得linux系

14、統(tǒng)內(nèi)核可以裁剪得非常小巧,很適合于嵌入式系統(tǒng)的需要。2.源碼公開由于linux系統(tǒng)的開發(fā)從一開始就與gnu項目緊密地結(jié)合起來,所以它的大多數(shù)組成部分都直接來自gnu項目。任何人、任何組織只要遵守gpl條款,就可以自由使用linux 源代碼,為用戶提供了最大限度的自由度。這一點(diǎn)也正投嵌入式系統(tǒng)所好,因為嵌入式系統(tǒng)應(yīng)用千差萬別,設(shè)計者往往需要針對具體的應(yīng)用對源碼進(jìn)行修改和優(yōu)化, 所以是否能獲得源代碼 對于嵌入式系統(tǒng)的開發(fā)是至關(guān)重要的2。加之linux的軟件資源十分豐富,每種通用程序在linux上幾乎都可以找到,并且數(shù)量還在不斷增加。這一切就使設(shè) 計者在其基礎(chǔ)之上進(jìn)行二次開發(fā)變得非常容易。另外,由于

15、linux源代碼公開,也使用戶不用擔(dān)心有“后閘”等安全隱患。同時,源碼開放給各教育機(jī)構(gòu)提供極大的方便,從而也促進(jìn)了linux的學(xué)習(xí)、推廣和應(yīng)用。3.豐富的網(wǎng)絡(luò)功能linux從誕生之日起就與internet密不可分,支持各種標(biāo)準(zhǔn)的internet網(wǎng)絡(luò)協(xié)議,并且很容易移植到嵌入式系統(tǒng)當(dāng)中。目前,linux幾乎支持所有主流的網(wǎng)絡(luò)硬件、網(wǎng)絡(luò)協(xié)議和文件系統(tǒng),因此它是nfs的一個很好的平臺。另一方面,由于linux有很好的文件系統(tǒng)支持(例如,它支持ext2、fat32、romfs等文件系統(tǒng)),是數(shù)據(jù)各份、同步和復(fù)制的良好平臺,這些都為開發(fā)嵌入式系統(tǒng)應(yīng)用打下了堅實的基礎(chǔ)。4.與unix完全兼容目前,在lin

16、ux中所包含的工具和實用程序,可以完成unix的所有主要功能。但由于linux不是為實時而設(shè)計的,因而這就成了linux在實時系統(tǒng)中應(yīng)用的最大遺憾。不過,目前有眾多的自由軟件愛好者正在為此進(jìn)行不懈的努力,也取得了諸多成果5.完全免費(fèi)linux是一款免費(fèi)的操作系統(tǒng),用戶可以通過網(wǎng)絡(luò)或其他途徑免費(fèi)獲得,并可以任意修改其源代碼。這是其他的操作系統(tǒng)所做不到的。正是由于這一點(diǎn),來自全世界的無數(shù)程序員參與了linux的修改、編寫工作,程序員可以根據(jù)自己的興趣和靈感對其進(jìn)行改變。這讓linux吸收了無數(shù)程序員的精華,不斷壯大。 6.多用戶、多任務(wù)linux支持多用戶,各個用戶對于自己的文件設(shè)備有自己特殊的權(quán)

17、利,保證了各用戶之間互不影響。多任務(wù)則是現(xiàn)在電腦最主要的一個特點(diǎn),linux可以使多個程序同時并獨(dú)立地運(yùn)行。 7.良好的界面 linux同時具有字符界面和圖形界面。在字符界面用戶可以通過鍵盤輸入相應(yīng)的指令來進(jìn)行操作。它同時也提供了類似windows圖形界面的x-window系統(tǒng),用戶可以使用鼠標(biāo)對其進(jìn)行操作。在x-window環(huán)境中就和在windows中相似,可以說是一個linux版的windows。 8.可靠的安全、穩(wěn)定性能 linux采取了許多安全技術(shù)措施,其中有對讀、寫進(jìn)行權(quán)限控制、審計跟蹤、核心授權(quán)等技術(shù),這些都為安全提供了保障。linux由于需要應(yīng)用到網(wǎng)絡(luò)服務(wù)器,這對穩(wěn)定性也有比較高

18、的要求,實際上linux在這方面也十分出色。 9.支持多種平臺 linux可以運(yùn)行在多種硬件平臺上,如具有x86、680x0、sparc、alpha等處理器的平臺。此外linux還是一種嵌入式操作系統(tǒng),可以運(yùn)行在掌上電腦、機(jī)頂盒或游戲機(jī)上。2001年1月份發(fā)布的linux 2.4版內(nèi)核已經(jīng)能夠完全支持intel 64位芯片架構(gòu)。同時linux也支持多處理器技術(shù)。多個處理器同時工作,使系統(tǒng)性能大大提高。1.1.3 linux的網(wǎng)絡(luò)功能(一)完善的內(nèi)置網(wǎng)絡(luò) linux在通信和網(wǎng)絡(luò)功能方面優(yōu)于其他操作系統(tǒng)。 其他操作系統(tǒng)不具有如此緊密地和內(nèi)核結(jié)合在一起的連接網(wǎng)絡(luò)能力,也沒有內(nèi)置這些聯(lián)網(wǎng)特性的靈活性。

19、 linux為用戶提供了完善、強(qiáng)大的網(wǎng)絡(luò)功能。 linux免費(fèi)提供大量支持internet的軟件3。internet是在unix領(lǐng)域中建立并繁榮起來的,因此,使用linux十分方便。用戶可用linux通過internet網(wǎng)絡(luò)進(jìn)行通信。(二)文件傳輸 用戶能通過linux命令完成內(nèi)部信息或文件的傳輸。(三)遠(yuǎn)程訪問linux不僅允許進(jìn)行文件和程序傳輸,還為系統(tǒng)管理員和技術(shù)人員提供訪問其他系統(tǒng)的窗口。通過遠(yuǎn)程訪問功能,一個技術(shù)人員能夠有效地為多個系統(tǒng)服務(wù),即使那些系統(tǒng)位于相距很遠(yuǎn)的地方。1.1.4 linux提供的網(wǎng)絡(luò)服務(wù)(一)電子郵件服務(wù)linux系統(tǒng)通過sendmail實現(xiàn)電子郵件功能。它具有

20、穩(wěn)定與可擴(kuò)充的特性,經(jīng)過適當(dāng)?shù)脑O(shè)定再配合必要的硬件能夠承受上千個使用者的負(fù)荷,而不會有任何錯誤。(二)網(wǎng)頁(web)服務(wù)linux提供很多網(wǎng)頁服務(wù)器,如cern httpd,ncsa httpd,apache等。其中,apache是世界排名第一的web服務(wù)器。根據(jù)著名的www服務(wù)器公司調(diào)查,世界上有50%以上的www服務(wù)器都在使用apache。(三)ftp服務(wù)ftp(file transfer protocol,文件傳輸協(xié)議)實現(xiàn)了客戶機(jī)在ftp服務(wù)器上傳與下載文件的功能。(四)域名服務(wù)用ip地址訪問internet上的主機(jī),需要記憶很多枯燥的數(shù)字。域名服務(wù)器可以實現(xiàn)ip地址和主機(jī)域名之間的轉(zhuǎn)

21、換。因此,訪問一臺internet上的主機(jī)時,只要輸入主機(jī)的域名,即可訪問該主機(jī)提供的服務(wù)。(五)新聞(news)服務(wù)usenet(友思網(wǎng))是一個大的告示板系統(tǒng),采用階層式的架構(gòu),包含有多種討論話題,計算機(jī)經(jīng)usenet以nntp(network news transfer protocol)通信協(xié)議互換文章。(六)其他網(wǎng)絡(luò)服務(wù) 包括撥號服務(wù)器、dhcp服務(wù)、bbs服務(wù)、防火墻服務(wù)、路由器服務(wù)等。1.2 tcp/ip協(xié)議簡介(一)簡介tcp/ip協(xié)議組之所以流行,部分原因是因為它可以用在各種各樣的信道和底層協(xié)議(例如t1和x.25、以太網(wǎng)以及rs-232串行接口)之上。確切地說,tcp/ip協(xié)

22、議是一組包括tcp協(xié)議和ip協(xié)議,udp(user datagram protocol)協(xié)議、icmp(internet control message protocol)協(xié)議和其他一些協(xié)議的協(xié)議組。tcp/ip協(xié)議并不完全符合osi的七層參考模型4。而tcp/ip通訊協(xié)議采用了4層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這4層分別為: 應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(smtp)、文件傳輸協(xié)議(ftp)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(telnet)等。 傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(tcp)、用戶數(shù)據(jù)報協(xié)議(udp)等,tcp和ud

23、p給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又?,這一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。 互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(ip)。 網(wǎng)絡(luò)接口層:對實際的網(wǎng)絡(luò)媒體的管理,定義如何使用實際網(wǎng)絡(luò)(如ethernet、serial line等)來傳送數(shù)據(jù)。(二)特點(diǎn)tcp/ip協(xié)議是現(xiàn)在互聯(lián)網(wǎng)的基礎(chǔ)。tcp/ip協(xié)議主要有如下的特點(diǎn)。 1tcp/ip協(xié)議是一個開放的協(xié)議標(biāo)準(zhǔn),所有人都可以免費(fèi)試用,并且是獨(dú)立于硬件和操作系統(tǒng)的。 2tcp/ip協(xié)議是不區(qū)分網(wǎng)絡(luò)硬件的,它在局域網(wǎng),廣域網(wǎng)和互聯(lián)網(wǎng)中都被廣泛使用。 3tc

24、p/ip協(xié)議使用統(tǒng)一的網(wǎng)絡(luò)地址分配的方案。網(wǎng)絡(luò)中的每臺電腦都具有唯一的ip地址。 4tcp/ip協(xié)議是一個標(biāo)準(zhǔn)的高層協(xié)議,擁有極高的可靠性,可以為用戶提供可靠的服務(wù)。1.3 socket的簡介所謂socket通常也稱作“套接字”,應(yīng)用程序通常通過“套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)要求。在internet上有很多這樣的主機(jī),這些主機(jī)一般運(yùn)行了多個服務(wù)軟件,同時提供幾種服務(wù)。每種服務(wù)都打開一個socket,并綁定到一個端口上,不同的端口對應(yīng)不同的服務(wù)。socket連接過程:根據(jù)連接啟動的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過程可以分為三個步驟:服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)。 服務(wù)

25、器監(jiān)聽:是服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡(luò)狀態(tài)。 客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號,然后就向服務(wù)器端套接字提出連接請求。連接確認(rèn):是指當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求,它就響應(yīng)客戶端套接字的請求,建立一個新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請求。1.4 arm的簡介arm(adva

26、nced risc machines)是微處理器行業(yè)的一家知名企業(yè),設(shè)計了大量高性能、廉價、耗能低的risc處理器、相關(guān)技術(shù)及軟件5。技術(shù)具有性能高、成本低和能耗省的特點(diǎn)。適用于多種領(lǐng)域,比如嵌入控制、消費(fèi)/教育類多媒體、dsp和移動式應(yīng)用等。arm公司是蘋果、acorn、vlsi、technology等公司的合資企業(yè)。arm將其技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和oem廠商,每個廠商得到的arm公司(6張)都是一套獨(dú)一無二的arm相關(guān)技術(shù)及服務(wù)。利用這種合伙關(guān)系,arm很快成為許多全球性risc標(biāo)準(zhǔn)的締造者。進(jìn)入21世紀(jì)之后,由于手機(jī)制造行業(yè)的快速發(fā)展,出貨量呈現(xiàn)爆炸式增長,arm處理器

27、占領(lǐng)了全球手機(jī)市場。2006年,全球arm芯片出貨量為20億片,2010年,arm合作伙伴的出貨量達(dá)到了60億。arm商品模式的強(qiáng)大之處在于它在世界范圍有超過100個的合作伙伴(partners)。arm 是設(shè)計公司,本身不生產(chǎn)芯片。采用轉(zhuǎn)讓許可證制度,由合作伙伴生產(chǎn)芯片。2007年底,arm的雇員總數(shù)為1728人,持有專利700項(另有900項正在申請批準(zhǔn)中),全球分支機(jī)構(gòu)31家,合作伙伴200家,年收入2.6億英鎊。 pxa270簡介:ours-pxa270d 型開發(fā)板是以pxa270 處理器為核心的嵌入式入門級開發(fā)板。本電路板集成了處理器、存儲器和多種串并接口,適合嵌入式學(xué)習(xí),也方便進(jìn)行

28、二次研發(fā),是高集成度的嵌入式系統(tǒng)開發(fā)板。第二章 規(guī)劃設(shè)計2.1 課題來源linux 操作系統(tǒng)作為一個開源的操作系統(tǒng)被越來越多的人所應(yīng)用,基于linux系統(tǒng)的聊天系統(tǒng)優(yōu)勢在于使用方便快捷,易學(xué)易懂,具有即時性。尤其是對于企事業(yè)單位具有可靠性,能夠?qū)崿F(xiàn)消息的即時發(fā)布與收集。不需使用互聯(lián)網(wǎng),只需局域網(wǎng)既可實現(xiàn)通訊,省時省力。另外該系統(tǒng)對硬件的需求很低,不影響電腦的其他工作。因此制作一個linux 操作系統(tǒng)下的擁有人性化界面的實時通訊工具,將給那些剛剛接觸linux操作系統(tǒng)的用戶帶來極大的方便,而且通過設(shè)計這樣的一個應(yīng)用程序還能更好的學(xué)習(xí)網(wǎng)絡(luò)編程知識和掌握linux平臺上應(yīng)用程序設(shè)計開發(fā)的過程,將大學(xué)

29、四年所學(xué)知識綜合運(yùn)用,以達(dá)到檢驗學(xué)習(xí)成果的目的。2.2 需求分析聊天室是一種廣泛應(yīng)用于網(wǎng)絡(luò)的聊天方式,操作非常簡單,功能也很豐富。聊天系統(tǒng)應(yīng)該有即時,快速的特點(diǎn)。服務(wù)器端和客戶端應(yīng)該有不同的功能特性。對于客戶端應(yīng)該能夠快速地檢查是否能夠連接到服務(wù)器端。能夠正確的獲得和反映當(dāng)前好友在線情況。能夠正確的與特定好友交流。能夠及時地接收到服務(wù)器端的數(shù)據(jù),并且能夠即時處理數(shù)據(jù),能夠?qū)⑻幚斫Y(jié)果反映給用戶。聊天系統(tǒng)分為兩個部分,服務(wù)器端和客戶端。本論文以基于linux聊天客戶端模塊設(shè)計與實現(xiàn)為題,主要研究聊天系統(tǒng)的客戶端??蛻舳藨?yīng)該完成的工作包括:1與服務(wù)器端建立通信通道,向服務(wù)器端發(fā)送信息。注冊界面:首先

30、與服務(wù)器連接,如果連接失敗,文件描述符是一個非正數(shù),通過判斷,以對話框的形式通知用戶連接失敗。如果用戶名已經(jīng)存在,服務(wù)器端返回協(xié)議“error”。如果注冊成功,服務(wù)器返回協(xié)議“ok”,通過對服務(wù)器返回的字符串判斷,客戶端通過對話框的形式給予提示不同的信息。登陸界面:首先與服務(wù)器連接,如果連接失敗,文件描述符室一個非正數(shù),通過判斷,以對話框的形式通知用戶連接失敗。如果用戶名與密碼不匹配或者重復(fù)登陸,服務(wù)器端返回協(xié)議“error”,如果登陸成功,服務(wù)器返回協(xié)議“ok”,客戶端通過對協(xié)議的判斷切換到聊天界面。聊天界面:首先判斷客戶端需求,通過用戶的選擇,向服務(wù)器發(fā)送一系列已經(jīng)協(xié)商好的通信協(xié)議;如:選

31、擇私聊則發(fā)送“所選用戶名+聊天內(nèi)容”,選擇群聊則發(fā)送“all+聊天內(nèi)容”。2接收來自服務(wù)器端的信息。通過服務(wù)器端的分析,服務(wù)器會向客戶端發(fā)送信息,同時客戶端當(dāng)監(jiān)聽到有信息可接收時,會讀出相應(yīng)信息存放到內(nèi)存當(dāng)中。3完成客戶端包括注冊、登錄、聊天三大板塊。在完成以上三大板塊的過程中,應(yīng)該注意三大板塊之間的聯(lián)系。4全部完成后,將客戶端程序移植到arm開發(fā)板上并實現(xiàn)。有了以上簡單的分析,可以知道,解決上述四個問題,即完成了該聊天系統(tǒng)的核心。補(bǔ)充:由于技術(shù)方面的欠缺,我的聊天室系統(tǒng)沒有應(yīng)用數(shù)據(jù)庫知識存放聊天記錄。聊天記錄是以隱藏文件的形式存放在整個系統(tǒng)的絕對路徑下。沒有實現(xiàn)留言功能,只有在線才能接收到別

32、人發(fā)送的消息。第三章 系統(tǒng)分析與設(shè)計方案3.1 聊天系統(tǒng)客戶端的總體設(shè)計要點(diǎn)聊天系統(tǒng)的設(shè)計與普通網(wǎng)站的實際所考慮的因素有許多不同之處,普通網(wǎng)站設(shè)計需考慮對布局進(jìn)入大量美化以及動畫設(shè)計等等,而聊天室卻只要提供滿足訪客雙方直接實時聊天即可6。因此,在設(shè)計聊天系統(tǒng)的過程中,必須要考慮好以下幾個設(shè)計要點(diǎn):(一)實現(xiàn)思想在internet上的聊天程序一般都是以服務(wù)器提供服務(wù)端連接響應(yīng),使用者通過客戶端程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在tcp/ip環(huán)境下,實現(xiàn)服務(wù)器端和客戶端兩部分程序。(二)服務(wù)器端工作流程服務(wù)器端通過socket( )系統(tǒng)

33、調(diào)用創(chuàng)建一個socket數(shù)組后(即設(shè)定了接受連接客戶的最大數(shù)目),與指定的本地端口綁定bind( ),就可以在端口進(jìn)行偵聽listen( )。如果有客戶端連接請求,則在數(shù)組中選擇一個空socket,將客戶端地址賦給這個socket。然后登錄成功的客戶就可以在服務(wù)器上聊天了。(三)客戶端工作流程客戶端程序相對簡單,只需要建立一個socket與服務(wù)器端連接,成功后通過這個socket來發(fā)送和接收數(shù)據(jù)就可以了。套接字之間的連接過程可以分為三個步驟:服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)。服務(wù)器監(jiān)聽是服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡(luò)狀態(tài)??蛻舳苏埱笫侵赣煽蛻舳说?/p>

34、套接字提出連接請求,要連接的目標(biāo)是服務(wù)器端的套接字。連接確認(rèn)是指當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求,它就響應(yīng)客戶端套接字的請求,建立一個新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,連接就建立好了。3.2 聊天系統(tǒng)客戶端的設(shè)計步驟及功能模塊劃分(一)聊天系統(tǒng)客戶端工作原理圖3-1輸入錯誤重新填寫用戶運(yùn)行客戶端應(yīng)用程序填寫用戶名密碼提交服務(wù)器用戶信息合法,用戶登陸到聊天室 接收服務(wù)器端的在線用戶列表接收消息接收好友下線或登陸消息發(fā)送消息(群聊、私聊)圖3-1 工作原理圖3.3 聊天系統(tǒng)客戶端各功能模塊(一)注冊功能模塊用戶進(jìn)入聊天系統(tǒng),點(diǎn)擊登錄模塊上的

35、注冊按鈕,進(jìn)入注冊頁面。頁面框架由qt語言編譯。功能有填寫用戶名、密碼、重復(fù)密碼;注冊界面顯示用戶名、密碼輸入規(guī)則。當(dāng)用戶輸入用戶名、密碼時,檢驗用戶輸入是否合法,輸入合法則通過socket建立于服務(wù)器的連接,向服務(wù)器發(fā)送用戶名、密碼。服務(wù)器端對所接收的內(nèi)容進(jìn)行核對,如用戶名密碼可用,則返回相應(yīng)信息??蛻舳私邮盏椒?wù)器發(fā)送過來的信息后,通知用戶是否注冊成功。注冊模塊發(fā)送到服務(wù)器的通信協(xié)議為:“regist:用戶名:密碼名”。 部分源碼如下:regist:regist() /用戶界面代碼void regist:sure_fun() int fd2; char *p; char buf10=; f

36、d2=getfd(); qstring tmp,str; if(name_line-text()=all) /用戶名不能為all qmessagebox:warning(this,tr(warning),tr(this name unable used!) ); name_line-clear(); return; if(name_line-text()=) /未輸入用戶名提示信息 qmessagebox:warning(this,tr(warning),tr(input a user name!); return; if(passwd_line-text()=) /未輸入密碼提示信息 qme

37、ssagebox:warning(this,tr(warning),tr(input a passwd!); return; qstring passwd1,passwd2; passwd1=passwd_line-text(); passwd2=repasswd_line-text(); if(passwd1=passwd2) /確保倆次密碼相同 tmp=regist; tmp=tmp+:; tmp=tmp+name_line-text(); tmp=tmp+:; tmp=tmp+passwd_line-text(); p=(char *)qprintable(tmp); int i; i=

38、write(fd2,p,strlen(p); /向服務(wù)器寫內(nèi)容 if(iclear(); return; else qmessagebox:warning(this,tr(error!),tr(twice passwd is different !); passwd_line-clear(); repasswd_line-clear(); return; (二)登錄功能模塊用戶進(jìn)入聊天系統(tǒng)則直接進(jìn)入登陸模塊7,界面直接提示輸入用戶名、密碼;當(dāng)已經(jīng)注冊完成賬號時,根據(jù)提示輸入用戶信息。客戶端通過socket建立與服務(wù)器的連接,并將信息傳遞給服務(wù)器,由服務(wù)器判斷輸入是否正確。如用戶名與密碼不相符,

39、則提示信息。信息輸入正確,則登陸成功,界面切換到聊天界面。登錄模塊發(fā)送到服務(wù)器的通信協(xié)議為:“l(fā)ogin:用戶名:密碼”。部分源碼如下:login:login() /登陸界面 void login:login_fun() int fd1=getfd(); char buf100=; char all_name4000 = ; qstring info,a,b; a=ledit1-text(); b=ledit2-text(); info = qstring(login)+:+a+:+b; write(fd1,(char *)qprintable(info),info.size(); /向服務(wù)器

40、寫入內(nèi)容 read(fd1,buf,sizeof(buf); /從服務(wù)器讀入內(nèi)容 if(strcmp(buf,relogin) = 0) /登陸失敗提示消息 qmessagebox:information(this,login error!,repeat login!); return; if(strcmp(buf,ok) = 0) /登陸成功 write(fd1,ok,2); read(fd1,all_name,sizeof(all_name); qstringlist namelist = qstring(all_name).split(:); namelist0 = all; chat_

41、ui *chat=new chat_ui;chat-box-additems(namelist); chat-setfd(fd1,a); write(fd1,ok,2); close(); chat-show(); /切換到聊天界面 chat-ledit-setfocus(); if(strcmp(buf,error) = 0) /用戶名與密碼不匹配 ledit1-clear(); ledit2-clear(); qmessagebox:information(this,login error!,name or passwd error! ); (三)聊天功能模塊 在本聊天系統(tǒng)客戶端中,聊天功

42、能分為群聊與私聊8。當(dāng)選擇下拉菜單上的all時,所聊天內(nèi)容為群聊,所有聊天室內(nèi)的在線人員均能看見。當(dāng)選擇下拉菜單上的任何一個人時,則為與某人的私聊,此狀態(tài)下的聊天內(nèi)容只有當(dāng)前選擇人員可看。聊天過程中,聊天室內(nèi)用戶上線、下線都給予提示。有管理員賬號,管理員可以任意踢出在線人員,被踢出用戶則無法正常使用聊天室。聊天功能模塊部分源碼:chat_ui:chat_ui() /聊天界面 void chat_ui:setfd(int tfd,qstring name) /獲取服務(wù)器上的文件描述符 fd = tfd; this-name = name; lsocket-setsocketdescriptor(

43、fd); void chat_ui:send_fun() /向服務(wù)器發(fā)送登錄用戶信息 qstring t,t1,t2; t1=box-currenttext(); t2=ledit-text(); t=t1+:+t2; write(fd,(char *)qprintable(t),t.size(); ledit-clear(); ledit-setfocus(); void chat_ui:get_mes() qstring str,status; str = lsocket-readall(); if(str.contains(qchar() /判斷用戶加入或離開 if(str0 != qc

44、har() qstringlist info = str.split(); str = info0; status = info1; qcolor color = chattext-textcolor(); chattext-settextcolor(qt:red); chattext-append(status); chattext-settextcolor(color); else qstringlist info = str.split(); status = info1; qcolor color = chattext-textcolor(); chattext-settextcolo

45、r(qt:red); chattext-append(status); chattext-settextcolor(color); return ; if(str.left(6) = *quit:|str.left(6) = *join:) /更新在線用戶的列表 qstringlist all_name = str.split(:); all_name0 = all; box-clear(); box-additems(all_name); return; qstringlist mes = str.split(:); mes0 = ; if(mes0.left(3) = qstring(te

46、xtcolor(); chattext-settextcolor(qt:blue); chattext-append(mes0); chattext-append(mes1); chattext-settextcolor(color); else chattext-append(mes0); chattext-append(mes1); qdir dir(./); /創(chuàng)建本地聊天記錄 dir.mkdir(chatrecord); qfile file(./chatrecord/+name); if(!file.open(qiodevice:append|qiodevice:text) retu

47、rn; qtextstream in(&file); in mes0 n mes1 n; file.close(); (四)服務(wù)器與客戶端之間的通信協(xié)議客戶端/服務(wù)器模型工作時要求有一套為客戶端和服務(wù)器所共識的慣例來保證服務(wù)能夠被提供(或被接受),這一套慣例包含了一套協(xié)議,它必須在通信的兩頭都被實現(xiàn)。根據(jù)不同的實際情況,協(xié)議可能是對稱的或非對稱的。在對稱的協(xié)議中每一方都有可能扮演主從角色;在非對稱協(xié)議中一方被不可改變地認(rèn)為是主機(jī),而另一方則是從機(jī)。無論具體的協(xié)議是對稱的或是非對稱的,當(dāng)服務(wù)被提供時必然存在客戶進(jìn)程和服務(wù)進(jìn)程。一個服務(wù)程序通常在一個眾所周知地地址監(jiān)聽客戶對服務(wù)地請求,也就是說,服

48、務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個客戶對這個服務(wù)地址提出連接請求。在這個時刻,服務(wù)程序被“驚醒”并且為客戶提供服務(wù)-對客戶的請求作出適當(dāng)?shù)姆磻?yīng)。這一請求/響應(yīng)的過程可以簡單地歸納為:服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)。主要實現(xiàn)過程:1客戶端發(fā)送消息給服務(wù)器端首先判斷客戶端需求,通過用戶的選擇,向服務(wù)器發(fā)送一系列已經(jīng)協(xié)商好的通信協(xié)議;如:選擇私聊則發(fā)送“所選用戶名+聊天內(nèi)容”,選擇群聊則發(fā)送“all+聊天內(nèi)容”。2接收服務(wù)器端發(fā)來的消息通過服務(wù)器端的分析,服務(wù)器會向客戶端發(fā)送信息,同時客戶端當(dāng)監(jiān)聽到有信息可接收時,會讀出相應(yīng)信息存放到內(nèi)存當(dāng)中。3顯示消息從內(nèi)存當(dāng)中讀出信息,通過字符串解析,將內(nèi)容按照不

溫馨提示

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

評論

0/150

提交評論