基于linux的聊天系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-信息管理與信息系統(tǒng)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩33頁(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、<p>  201 屆本科畢業(yè)論文(設(shè)計(jì))</p><p>  基于Linux的聊天系統(tǒng)</p><p><b>  設(shè)計(jì)與實(shí)現(xiàn)</b></p><p>  姓 名:_______ ___________</p><p>  系 別:____計(jì)算機(jī)與信息技術(shù)____</p><p

2、>  專 業(yè):___信息管理與信息系統(tǒng)___</p><p>  學(xué) 號(hào):_______xxxxxx_______</p><p>  指導(dǎo)教師:_______xx___________</p><p>  2015年4月20日</p><p><b>  目錄</b></p><p

3、><b>  摘要II</b></p><p>  AbstractIII</p><p><b>  1 引言1</b></p><p><b>  1.1 背景1</b></p><p>  1.2 選課意義1</p><p>  1

4、.3 Linux與Windows操作系統(tǒng)1</p><p><b>  2 需求分析3</b></p><p>  2.1 需求性分析3</p><p>  2.1.1 編寫目的3</p><p>  2.2 對(duì)界面的需求3</p><p>  3 系統(tǒng)應(yīng)用技術(shù)3</p>

5、<p>  3.1 Gtk+界面設(shè)計(jì)3</p><p>  3.1.1 Gtk+基礎(chǔ)3</p><p>  3.1.2 Gtk+的主要特點(diǎn)4</p><p>  3.1.3 Gtk+的組成4</p><p>  3.2 socket通信4</p><p>  3.2.1 Socket簡(jiǎn)述4<

6、;/p><p>  3.2.2 Socket的主要類型4</p><p>  3.2.3 Socket組要在如下兩類系統(tǒng)中使用4</p><p>  3.3 MySql數(shù)據(jù)庫(kù)4</p><p>  3.3.1 MySql發(fā)展歷史4</p><p>  3.3.2 MySql的常用命令5</p>&l

7、t;p>  3.3.3 MySql的重要特性6</p><p><b>  4 設(shè)計(jì)和實(shí)現(xiàn)6</b></p><p>  4.1 Gtk+界面設(shè)計(jì)6</p><p>  4.2 連接數(shù)據(jù)庫(kù)8</p><p>  4.3 網(wǎng)絡(luò)通信socket編程9</p><p>  4.3.1 s

8、ocket編程方法9</p><p>  4.3.2 客戶端/服務(wù)器工作流程9</p><p>  4.3.3 結(jié)果截圖11</p><p><b>  5 系統(tǒng)測(cè)試11</b></p><p>  5.1 實(shí)現(xiàn)Gtk+界面設(shè)計(jì)11</p><p>  5.2 實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)13<

9、;/p><p>  5.3 實(shí)現(xiàn)socket通信13</p><p><b>  參考文獻(xiàn)15</b></p><p><b>  致謝15</b></p><p><b>  附錄16</b></p><p>  基于Linux的聊天系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

10、</p><p><b>  摘要</b></p><p>  Linux是一種能運(yùn)行于多種平臺(tái)、源代碼公開(kāi)、免費(fèi)、功能強(qiáng)大、遵循POSIX標(biāo)準(zhǔn)、與UNIX兼容的操作系統(tǒng)。Linux自20世紀(jì)中期以來(lái)一直在突飛猛進(jìn)地發(fā)展,人們?cè)谟?jì)算機(jī)軟件開(kāi)發(fā)和應(yīng)用中越來(lái)越離不開(kāi)它。Linux的誕生和發(fā)展給全球的軟件業(yè)帶來(lái)了新的機(jī)遇,也使微軟的Windows操作系統(tǒng)面臨有史以來(lái)最大的挑

11、戰(zhàn)。由于Linux屬于自由軟件,它的源代碼是公開(kāi)的,并遵循通用公司公共許可證(General Public Licence,GPL),所有用戶可以免費(fèi)使用,從而使Linux在極短的時(shí)間內(nèi)就成了一套成熟而穩(wěn)定的操作系統(tǒng)。全世界成千上萬(wàn)的程序?qū)<液蚅inux愛(ài)好者正在通過(guò)Internet不斷地對(duì)Linux進(jìn)行開(kāi)發(fā)、完善和維護(hù)。</p><p>  Linux操作系統(tǒng)核心最早是1991年由芬蘭的Linus Torval

12、ds在芬蘭赫爾辛大學(xué)上學(xué)時(shí)發(fā)布的(那年Torvalds年僅25歲),后來(lái)經(jīng)過(guò)眾多世界頂尖的軟件工程師的不斷修改和完善,Linux得以在全球普及開(kāi)來(lái),在服務(wù)器領(lǐng)域及個(gè)人桌面得到越來(lái)越多的應(yīng)用,在嵌入式開(kāi)發(fā)方面更是具有其他操作系統(tǒng)無(wú)可比擬的優(yōu)勢(shì),并以每年100%的影虎數(shù)遞增,顯示了Linux強(qiáng)大的實(shí)力。</p><p>  基于資源共享和軟件自由的思想,linux成為越來(lái)越多技術(shù)人員的理想之國(guó)。作為一個(gè)穩(wěn)定的多用戶類

13、unix網(wǎng)絡(luò)操作系統(tǒng),linux能提供完美的網(wǎng)絡(luò)解決方案,出色的勝任網(wǎng)絡(luò)構(gòu)建和維護(hù)。出于對(duì)unix技術(shù)優(yōu)勢(shì)的出色繼承和延續(xù),linux對(duì)多種網(wǎng)絡(luò)協(xié)議的支持使得網(wǎng)絡(luò)解決方案極大的豐富。</p><p>  在 Linux 中的網(wǎng)絡(luò)編程是通過(guò)socket接口來(lái)進(jìn)行的,Socket是TCP/IP網(wǎng)絡(luò)的API。不但是一種特殊的I/O,它也是一種文件描述符。socket有TCP和UDP兩個(gè)協(xié)議,TCP協(xié)議有數(shù)據(jù)的可靠性、應(yīng)

14、用的實(shí)時(shí)性、網(wǎng)絡(luò)的可靠性三個(gè)優(yōu)點(diǎn)。因此選擇TCP協(xié)議更為可靠。</p><p>  本系統(tǒng)實(shí)現(xiàn)了在Linux網(wǎng)絡(luò)聊天室的基本功能。在Linux下編寫并調(diào)試服務(wù)器端程序和客戶端程序,實(shí)現(xiàn)了客戶、服務(wù)器之間的連接和通信??梢栽趩螜C(jī)上開(kāi)辟兩個(gè)窗口分別運(yùn)行客戶、服務(wù)器端的程序,或者兩臺(tái)主機(jī)鏈接分別作為客戶和服務(wù)器的方式。該系統(tǒng)主要實(shí)現(xiàn)了編輯信息、換行、查詢歷史記錄、發(fā)送及關(guān)閉等主要功能。</p><p

15、>  Linux是類UNIX計(jì)算機(jī)操作系統(tǒng)的名稱。Linux操作系統(tǒng)內(nèi)核的名稱也是“Linux”。Linux操作系統(tǒng)是自由軟件和開(kāi)放源代碼發(fā)展中最著名的例子。嚴(yán)格來(lái)講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但實(shí)際上,人們已經(jīng)習(xí)慣了用Linux來(lái)形容整個(gè)基于Linux內(nèi)核并且用GNU工程各種工具和數(shù)據(jù)庫(kù)的操作系統(tǒng)。</p><p>  基于這些組件的Linux軟件被稱為L(zhǎng)inux發(fā)行版。一般來(lái)說(shuō),一個(gè)Li

16、nux發(fā)行包包含大量的軟件,比如軟件開(kāi)發(fā)工具、數(shù)據(jù)庫(kù)(如MySql)、網(wǎng)絡(luò)服務(wù)器、Xwindows、桌面環(huán)境、辦公包、腳本語(yǔ)言,等等。Linux現(xiàn)在是個(gè)人計(jì)算機(jī)和工作站上的UNIX類操作系統(tǒng)。它不僅繼承了UNIX的特征,而且在許多方面超過(guò)了UNIX。大量的高級(jí)程序設(shè)計(jì)語(yǔ)言已移植到Linux系統(tǒng)上,因而使它成為理想的應(yīng)用軟件開(kāi)發(fā)平臺(tái),而且,在Linux系統(tǒng)下開(kāi)發(fā)的應(yīng)用程序具有良好的可移植性。Linux擁有廣泛的應(yīng)用前景。該聊天系統(tǒng)主要實(shí)現(xiàn)

17、功能有:編輯信息、換行、查詢歷史記錄、發(fā)送及關(guān)閉等主要功能。</p><p>  不同于之前分小組做過(guò)的系統(tǒng)的區(qū)別是,本次建立的系統(tǒng)是作者自己依據(jù)在洛陽(yáng)惠普基地所學(xué)得的知識(shí),結(jié)合平時(shí)所做的實(shí)驗(yàn),總結(jié)教訓(xùn)和失誤之處,自行完成的系統(tǒng)。本人覺(jué)得更有意義。</p><p>  關(guān)鍵字:Linux;Socket;C語(yǔ)言;TCP;GCC;MySQL.</p><p>  Des

18、ign and implementation of the chat system based on Linux</p><p><b>  Abstract</b></p><p>  Linux is a kind of can run on a variety of platforms, open source, free, powerful, follow t

19、he POSIX standard, and UNIX compatible operating system. Linux since mid twentieth Century has been the development of make a spurt of progress, people are in the computer software development and application cannot do w

20、ithout it. The birth and development of Linux has brought new opportunities for the global software industry, also makes the Windows operating system Microsoft faces its biggest challenge. </p><p>  Linux op

21、erating system is the core of the earliest Finland in 1991 by the Linus Torvalds in Finland Helsinki University School (Torvalds released that year only 25 years old), after many of the world's top software engineers

22、 constantly revised and improved, Linux was able to spread around the world, has been used more and more in the field of personal server and desktop, in embedded development is more with other operating system There is n

23、othing comparable to this advantage, and increase to the</p><p>  On the basis of the thought with free resource-sharing and software, linux becomes more and more technical staff's ideal country.and is a

24、ttracting more persons to join in this ideal constantly.As a steady multi-user unix network operating system, linux can offer the perfect network solution and is competent of constructing and maintaining the network exce

25、llent.For the inheritting and extending splendidly of technological advantage to unix, the abundance that linux support to many kinds of procot</p><p>  In Linux, network programming is carried out through t

26、he socket interface,Socket is the API of TCP/IP network.Not only Is a special I/O but also is a file descriptor.Socket has two protocols which are TCP and UDP,TCP protocol has three advantages of the eliability of data,

27、the application of real-time and the network reliability.So it is more reliable to choose TCP protocol.</p><p>  The system Implementate the basic function of the network chat room under linux. Prepared and

28、debugging server and client program in the Linux. Can open up two windows In a single machine to run the server and client program respectively,or to connect twohosts, respectively, as the way of the client and server.Th

29、is system mainly realizes the editing information query, newline, main function of history, sending and close etc..</p><p>  Keywords: Linux;Socket;C Language;TCP;GCC;MySQL.</p><p><b>  1

30、引言</b></p><p><b>  1.1 背景</b></p><p>  在這個(gè)人才如潮涌般的世界,系統(tǒng)界的先驅(qū)Windows系統(tǒng)已經(jīng)不能滿足越來(lái)越多的開(kāi)發(fā)人員的需求。Linux系統(tǒng)由于其優(yōu)越的自身?xiàng)l件,能運(yùn)行于多種平臺(tái)、源代碼公開(kāi)、免費(fèi)、功能強(qiáng)大、遵循POSIX標(biāo)準(zhǔn)、與UNIX兼容的操作系統(tǒng)等諸多優(yōu)勢(shì),越來(lái)越受到開(kāi)發(fā)人員的青睞。本次選課的內(nèi)容選

31、擇這個(gè)系統(tǒng)開(kāi)開(kāi)發(fā)聊天工具也是因?yàn)檫@個(gè)原因。</p><p><b>  1.2 選課意義</b></p><p>  Linux是一種能運(yùn)行于多種平臺(tái)、源代碼公開(kāi)、免費(fèi)、功能強(qiáng)大、遵循POSIX標(biāo)準(zhǔn)、與UNIX兼容的操作系統(tǒng)。Linux自20世紀(jì)中期以來(lái)一直在突飛猛進(jìn)地發(fā)展,人們?cè)谟?jì)算機(jī)軟件開(kāi)發(fā)和應(yīng)用中越來(lái)越離不開(kāi)它。Linux的誕生和發(fā)展給全球的軟件業(yè)帶來(lái)了新的機(jī)遇

32、,也使微軟的Windows操作系統(tǒng)面臨有史以來(lái)最大的挑戰(zhàn)。由于Linux屬于自由軟件,它的源代碼是公開(kāi)的,并遵循通用公共許可證(General Public Licence,GPL),所以用戶可以免費(fèi)使用,從而使Linux在極短的時(shí)間內(nèi)就成了一套成熟而穩(wěn)定的操作系統(tǒng)。全世界成千上萬(wàn)的程序?qū)<液蚅inux愛(ài)好者正在通過(guò)Internet不斷地對(duì)Linux進(jìn)行開(kāi)發(fā)、完善和維護(hù)【1】。</p><p>  1.3 Lin

33、ux與Windows操作系統(tǒng)</p><p>  和Linux一樣,Windows是完全的多任務(wù)操作系統(tǒng)。它們支持同樣的用戶接口、網(wǎng)絡(luò)和安全性。但Windows操作系統(tǒng)是商用的操作系統(tǒng),由微軟公司控制接口和設(shè)計(jì)。因此,用戶無(wú)法對(duì)Windows做任何改動(dòng)。</p><p>  在穩(wěn)定性方面,Linux和Windows運(yùn)行的穩(wěn)定性各有優(yōu)劣。但Linux的任何程序都是相對(duì)獨(dú)立的,哪怕GNOME和

34、KDE(窗口管理程序)也是獨(dú)立的。因此軟件的崩潰難以造成系統(tǒng)的癱瘓(死機(jī))。此時(shí),只要重新運(yùn)行程序就可以恢復(fù)。Windows的死機(jī)頻率遠(yuǎn)遠(yuǎn)高于Linux。在多用戶方面,Linux是真正的多用戶系統(tǒng),可以有多個(gè)用戶真正登錄。而相對(duì)來(lái)說(shuō),Windows就很勉強(qiáng);在對(duì)中文的支持方面,Windows的多個(gè)版本對(duì)于中文的支持是很強(qiáng)的,字體也很漂亮。而Linux雖然也支持中文,但要完全支持中文需要手動(dòng)做很多設(shè)置。不過(guò)由于幾乎每個(gè)軟件都要設(shè)置字體和字

35、符編碼,即使做的再好,任然可能看到中文亂碼,而且開(kāi)源的中文字體基本都不好看。因此,Linux在中文顯示上其效果不如Windows;在安全性方面,Windows的安全性是很有問(wèn)題的,為此,必須安裝各種殺毒軟件、防火墻、防垃圾軟件、防間諜軟件等保證安全的軟件,而這些軟件的安裝占去了很多的系統(tǒng)資源。即使這樣,還是防不勝防。相對(duì)而言,Linux的安全性好很多;在應(yīng)用軟件方面,雖然Linux下的軟件有很多,但相比Windows,還是少很多。Lin

36、ux</p><p>  由于受知識(shí)產(chǎn)權(quán)的限制,所以無(wú)論是使用PC平臺(tái)上的Windows,還是使用應(yīng)用于大中型機(jī)的UNIX,都無(wú)法窺視到其內(nèi)部結(jié)構(gòu)。這些系統(tǒng)很可能存在不為我們所知的漏洞,如果這些漏洞為別有用心者所用,將會(huì)產(chǎn)生各種安全問(wèn)題。操作系統(tǒng)不同于其他軟件產(chǎn)品,它是其他應(yīng)用程序得以運(yùn)行的平臺(tái)。由于我們無(wú)法獲知這些系統(tǒng)的細(xì)節(jié),所以我們無(wú)法確保計(jì)算機(jī)應(yīng)用的安全,長(zhǎng)此以往,將會(huì)對(duì)軟件產(chǎn)業(yè)發(fā)展產(chǎn)生深遠(yuǎn)的負(fù)面影響。&l

37、t;/p><p>  Linux的出現(xiàn),一方面促進(jìn)了許多國(guó)家軟件產(chǎn)業(yè)的發(fā)展,另一方面,它也為廣大的學(xué)生提供了一份寶貴的學(xué)習(xí)資料。目前UNIX、Linux、Windows三種系統(tǒng)三分天下,最終誰(shuí)能占領(lǐng)市場(chǎng)的主流而成為市場(chǎng)霸主,目前還沒(méi)有定論。但總的來(lái)說(shuō),Linux的發(fā)展前景是很廣闊的【1】。</p><p> ?。?)Linux的起源于發(fā)展</p><p>  Linux

38、的發(fā)言為“Lin-noks”,中文發(fā)音為“利尼克斯”。它的標(biāo)志是可愛(ài)的企鵝,取自芬蘭的吉祥物。</p><p>  Linux起源于1991年,Linus Torvalds為了編寫一個(gè)比Minix(由譚邦寧教授開(kāi)發(fā)的一個(gè)用于操作系統(tǒng)教學(xué)、很小的UNIX操作系統(tǒng))更好的操作系統(tǒng),首次在Internet上發(fā)布了基于Intel 386 體系結(jié)構(gòu)、類似于UNIX的Linux源代碼,這就是最早的Linux版本。由于Linu

39、x具有結(jié)構(gòu)清晰、功能簡(jiǎn)捷等特點(diǎn),許多高等院校的學(xué)生和科研機(jī)構(gòu)的研究人員紛紛把它作為學(xué)習(xí)和研究的對(duì)象。</p><p>  Linux的歷史是和GNU緊密聯(lián)系在一起的。從1983年開(kāi)始的GNU計(jì)劃(該計(jì)劃致力于開(kāi)發(fā)一個(gè)自由并且完整的類UNIX操作系統(tǒng),包括軟件開(kāi)發(fā)工具和各種應(yīng)用程序)到1991年Linux內(nèi)核發(fā)布,GNU已經(jīng)幾乎完成了除了系統(tǒng)內(nèi)核之外的各種必備軟件的開(kāi)發(fā)。在Linus Torvalds和其他開(kāi)發(fā)人員

40、的努力下,GNU組件可以運(yùn)行于Linux內(nèi)核之上。整個(gè)內(nèi)核是基于GNU通用公共許可,也就是GPL,但是Linux內(nèi)核并不是GNU計(jì)劃的一部分。1994年3月,Linux 1.0版正式發(fā)布,Marc Ewing成立了Red Hat軟件公司,成為最著名的Linux分銷商之一。</p><p>  現(xiàn)在,Linux的用戶群一般都是專業(yè)人士。他們?cè)敢獍惭b并設(shè)置自己的操作系統(tǒng),因而往往比其他操作系統(tǒng)的用戶要花更多的時(shí)間。這

41、些用戶有時(shí)被稱作“黑客”或“極客”(geek)。</p><p>  使用Linux的主要成本為移植、培訓(xùn)和學(xué)習(xí)的費(fèi)用,早期由于會(huì)使用Linux的人較少,并且在軟件設(shè)計(jì)時(shí)并未考慮到非專業(yè)者的使用,導(dǎo)致這方面的費(fèi)用極高。這方面的費(fèi)用已經(jīng)隨著Linux的日益普及和Linux上的軟件越來(lái)越多、越來(lái)越方便而降低,但這仍是使用Linux的主要成本。</p><p>  然而隨著Linux的慢慢開(kāi)始流

42、行,有些原始設(shè)備制造商(OEM)開(kāi)始在其銷售的電腦上預(yù)裝上Linux,Linux的用戶中也有了普通電腦用戶,Linux系統(tǒng)也開(kāi)始慢慢出現(xiàn)在個(gè)人電腦操作系統(tǒng)市場(chǎng)。Linux在歐洲、美國(guó)和日本的流行程度比較高,歐美地區(qū)還發(fā)行Linux平臺(tái)的游戲和其他家用軟件。Linux開(kāi)源社區(qū)也是以歐洲、美國(guó)、日本等發(fā)達(dá)國(guó)家及地區(qū)的人士居多。</p><p>  每個(gè)孩子擁有一臺(tái)筆記本電腦這一項(xiàng)目正在催生新的、更為龐大的Linux用

43、戶群,計(jì)劃將包括發(fā)展中國(guó)家的幾億學(xué)童、他們的家庭和社區(qū)。在2007年,已經(jīng)有6個(gè)國(guó)家分別訂購(gòu)了至少一百萬(wàn)臺(tái)的筆記本電腦免費(fèi)發(fā)放給學(xué)生。谷歌、RedHat和eBay是該項(xiàng)目的主要支持者【2】。下面簡(jiǎn)單地回顧一下Linux版本的變化過(guò)程:</p><p>  1991年10月,Linux第一個(gè)公開(kāi)版0.02版發(fā)布。</p><p>  1994年3月,Linux 1.0 版發(fā)布。</p&

44、gt;<p>  1999年,Linux 2.2 發(fā)布:GNOME 1.0 發(fā)布;支持Linux 2.2 的Red Hat 6.0 發(fā)布;IBM推出全面支持Linux的計(jì)劃;HP宣布支持Linux。</p><p>  1999年至2003年,各種Linux版本不斷發(fā)布,在市場(chǎng)上的影響巨大。</p><p>  Linux內(nèi)核最初是為Intel 386 微處理器設(shè)計(jì)的;現(xiàn)在,

45、Linux內(nèi)核支持從個(gè)人電腦到大型主機(jī),甚至包括嵌入式系統(tǒng)在內(nèi)的各種硬件設(shè)備。</p><p> ?。?)Linux的內(nèi)核</p><p>  Linux內(nèi)核的最初版本是由Linus Torvalds編寫的,為了能夠使Linux更加完善,Linus Torvalds在網(wǎng)絡(luò)鎖公開(kāi)了Linux的源碼,邀請(qǐng)全世界的志愿者參與Linux的開(kāi)發(fā)。由于許多專業(yè)用戶自愿地開(kāi)發(fā)它的應(yīng)用程序,并借助Inte

46、rnet拿出來(lái)讓大家一起修改,所以它周邊的程序越來(lái)越多,Linux得到了不斷的完善,并在短時(shí)期內(nèi)迅速崛起,如今仍以相當(dāng)快的速度在不斷地發(fā)展著。Linux是一個(gè)很有發(fā)展前途的操作系統(tǒng),也是為數(shù)不多可以與Microsoft旗下操作系統(tǒng)相競(jìng)爭(zhēng)的操作系統(tǒng)。</p><p>  Linux內(nèi)核由5個(gè)主要的子系統(tǒng)組成。這5個(gè)子系統(tǒng)分別是進(jìn)程調(diào)度(SCHEN)、內(nèi)存管理(MM)、虛擬文件系統(tǒng)(VFS)、網(wǎng)絡(luò)接口(NET)和進(jìn)程

47、間通信(IPC)【3】。</p><p>  各個(gè)子系統(tǒng)之間的依賴關(guān)系如下:</p><p>  進(jìn)程調(diào)度與內(nèi)存管理之間的關(guān)系:這兩個(gè)子系統(tǒng)互相依賴。程序要在多道程序環(huán)境下運(yùn)行,必須為之創(chuàng)建進(jìn)程,而創(chuàng)建進(jìn)程的第一件事,就是要將程序和數(shù)據(jù)裝入內(nèi)存。</p><p>  進(jìn)程間通信與內(nèi)存管理之間的關(guān)系:進(jìn)程間通信子系統(tǒng)要依賴內(nèi)存管理來(lái)支持共享內(nèi)存通信機(jī)制,這種機(jī)制允許兩

48、個(gè)進(jìn)程除了擁有自己的私有內(nèi)存外,還可存取共同的內(nèi)存區(qū)域。</p><p>  虛擬文件系統(tǒng)與網(wǎng)絡(luò)接口之間的關(guān)系:虛擬文件系統(tǒng)利用網(wǎng)絡(luò)接口來(lái)支持網(wǎng)絡(luò)文件系統(tǒng)(NFS),利用內(nèi)存管理來(lái)支持RAMDISK設(shè)備。</p><p>  內(nèi)存管理與虛擬文件系統(tǒng)之間的關(guān)系:內(nèi)存管理利用虛擬文件系統(tǒng)來(lái)支持交換,交換進(jìn)程定期地由調(diào)度程序調(diào)度,這也是內(nèi)存管理依賴于進(jìn)程調(diào)度的唯一原因。當(dāng)一個(gè)進(jìn)程存取的內(nèi)存映射被

49、換出時(shí),內(nèi)存管理向文件系統(tǒng)發(fā)出請(qǐng)求,同時(shí),掛起當(dāng)前正在運(yùn)行的進(jìn)程。</p><p>  在這些子系統(tǒng)中,進(jìn)程調(diào)度子系統(tǒng)是其他子系統(tǒng)得以順利工作的關(guān)鍵。無(wú)論是文件系統(tǒng)的系統(tǒng)進(jìn)程還是網(wǎng)絡(luò)子系統(tǒng)的服務(wù)進(jìn)程,都需要通過(guò)進(jìn)程調(diào)度來(lái)獲得相應(yīng)的CPU時(shí)間以正常運(yùn)行【4】。</p><p><b>  2 需求分析</b></p><p><b> 

50、 2.1 需求性分析</b></p><p>  2.1.1 編寫目的</p><p>  隨著Linux操作系統(tǒng)的慢慢開(kāi)始流行,將來(lái)會(huì)有越來(lái)越多的軟件運(yùn)行于Linux操作系統(tǒng)上。本次課題就是以Linux操作系統(tǒng)為基礎(chǔ)設(shè)計(jì)的類似于Windows操作系統(tǒng)的聊天程序,使得很多安裝的是Linux操作系統(tǒng)的人士能夠像在Windows操作系統(tǒng)上聊天程序一樣,方便的進(jìn)行溝通。</p&

51、gt;<p>  使用已學(xué)完的Linux系統(tǒng)、Gtk+界面設(shè)計(jì)、連接數(shù)據(jù)庫(kù)和socket通信等功能來(lái)實(shí)現(xiàn)聊天系統(tǒng)。</p><p>  2.2 對(duì)界面的需求</p><p>  1)一個(gè)顯示框:用來(lái)顯示發(fā)送和接受的聊天信息。</p><p>  2)兩個(gè)復(fù)選框:(1)編輯:用來(lái)控制信息顯示框來(lái)輸入信息是否可編輯。

52、 </p><p> ?。?)換行:用來(lái)控制顯示框里面的文本是否可以換行。</p><p>  3)三個(gè)按鈕: (1)歷史記錄按鈕:查看歷史記錄的信息。(2)發(fā)送按鈕:發(fā) </p><p>  送需要發(fā)出的信息。(3)關(guān)閉按鈕:關(guān)閉窗口。</p><p>  4)一個(gè)錄入框: 功能是讓用戶可以輸入需要發(fā)送的信息。</p>

53、<p>  5)對(duì)通信的需求:(1)綁定服務(wù)器的IP地址。(2)客戶機(jī)可以實(shí)現(xiàn)發(fā)送接</p><p>  收信息。(3)服務(wù)器可以實(shí)現(xiàn)發(fā)送接收信息。</p><p>  6)對(duì)數(shù)據(jù)庫(kù)的需求:聊天信息插入數(shù)據(jù)庫(kù),也可以從數(shù)據(jù)庫(kù)里面取出信息。</p><p>  7)運(yùn)行環(huán)境:Windows 7系統(tǒng)、虛擬機(jī)、linux系統(tǒng)、MySql數(shù)據(jù)庫(kù)。</p&

54、gt;<p><b>  3 系統(tǒng)應(yīng)用技術(shù)</b></p><p>  3.1 Gtk+界面設(shè)計(jì)</p><p>  Gtk+是Linux環(huán)境下用于圖形用戶界面開(kāi)發(fā)的一個(gè)庫(kù),現(xiàn)在已成為類UNIX系統(tǒng)下開(kāi)發(fā)圖形界面應(yīng)用程序的主流開(kāi)發(fā)工具之一,并已移植到Windows上了。通過(guò)這個(gè)庫(kù),可以很方便地實(shí)現(xiàn)在Linux操作系統(tǒng)中開(kāi)發(fā)圖形用戶界面【5】。</p

55、><p>  3.1.1 Gtk+基礎(chǔ)</p><p>  最初Gtk+是作為另一個(gè)著名的源碼項(xiàng)目GIMP(GNU Image Manipulation Program,wwww.gimp.com)的副產(chǎn)品而創(chuàng)建的。GIMP最初是類UNIX操作系統(tǒng)的圖像處理程序,現(xiàn)在也被移植到了Windows平臺(tái)。為了簡(jiǎn)化GIMP的開(kāi)發(fā),專門開(kāi)發(fā)了GIMP ToolKit——一個(gè)生成GUI的工具庫(kù)(或者,實(shí)際

56、上是若干個(gè)密切相關(guān)的庫(kù)的集合),這就是Gtk。它是一套跨多種平臺(tái)的圖像工具包,支持創(chuàng)建于GUI的應(yīng)用程序(可以把Gtk+想象成一個(gè)工具包,從這個(gè)工具包中可以找到用來(lái)創(chuàng)建GUI的許多已經(jīng)準(zhǔn)備好的構(gòu)造塊)。 在增加了面向?qū)ο蟮奶匦灾螅拿Q后面添加了一個(gè)加號(hào),于是就成為Gtk+。Gtk+是自由軟件,并且是GNU計(jì)劃的一部分,是按LGPL發(fā)布的。</p><p>  3.1.2 Gtk+的主要特點(diǎn)</p>

57、;<p>  (1)Gtk+是一個(gè)小型而高效的控件庫(kù);</p><p>  (2)Gtk+應(yīng)用程序的國(guó)際化(i18n)、本地化(110n)提供了很好的處理工具;</p><p> ?。?)Gtk+是可移植的,而且具有多種語(yǔ)言前端;</p><p> ?。?)Gtk+為界面設(shè)計(jì)提供了配套的工具Glade;</p><p> ?。?

58、)提供不同的顯示引擎,使得最終用戶可以制定外觀和質(zhì)感;</p><p> ?。?)Gtk+的應(yīng)用廣泛;</p><p>  (7)Gtk+對(duì)Windows的支持;</p><p> ?。?)Gtk+自身特性。</p><p>  3.1.3 Gtk+的組成</p><p> ?。?)Gtk+工具的應(yīng)用層次:GTK、GD

59、K、GLIB;</p><p> ?。?)Gtk+對(duì)象的層次結(jié)構(gòu):Gtk+中所有的窗口部件(Widgets)有共同的祖先——Gtk_Object,所有的可視對(duì)象有一個(gè)共同的祖先Gtk_Widget;</p><p> ?。?)Gtk+圖形庫(kù)構(gòu)件:提供了窗口、標(biāo)簽、命令按鈕、開(kāi)發(fā)按鈕等【6】。</p><p>  3.2 socket通信</p><

60、;p>  3.2.1 Socket簡(jiǎn)述</p><p>  應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP和UDP會(huì)遇到同事為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過(guò)同一個(gè)TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為Socket的接口【1】。</p><p>  3.2.2 So

61、cket的主要類型</p><p><b> ?。?)流式套接字</b></p><p>  提供一個(gè)面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無(wú)差錯(cuò)、無(wú)重復(fù)的發(fā)送,且按發(fā)送順序接收。</p><p><b> ?。?)數(shù)據(jù)報(bào)套接字</b></p><p>  提供一個(gè)無(wú)連接服務(wù)。數(shù)據(jù)包以獨(dú)立包形式被發(fā)送,

62、不提供無(wú)錯(cuò)保證,數(shù)據(jù)可能丟失或重復(fù),并且接收順序混亂。</p><p><b> ?。?)原始式套接字</b></p><p>  該接口允許對(duì)較低層協(xié)議直接訪問(wèn),常用于檢驗(yàn)新的協(xié)議實(shí)現(xiàn)或訪問(wèn)現(xiàn)有服務(wù)中配置的新設(shè)備。</p><p>  Socket()函數(shù)原型:int socket(int don=main,int type,int prot

63、ocol);</p><p>  3.2.3 Socket組要在如下兩類系統(tǒng)中使用</p><p> ?。?)Windows Socket.</p><p> ?。?)Linux Socket.</p><p>  3.3 MySql數(shù)據(jù)庫(kù)</p><p>  3.3.1 MySql發(fā)展歷史</p>&l

64、t;p>  MySql的歷史最早可以追溯到1979年,有一個(gè)人叫Monty Widenius, 為一個(gè)叫TcX的小公司打工,并用BASIC設(shè)計(jì)了一個(gè)報(bào)表工具,可以在4M主頻和16KB內(nèi)存的計(jì)算機(jī)上運(yùn)行。過(guò)了不久,又將此工具,使用C語(yǔ)言重寫,移植到Unix平臺(tái),當(dāng)時(shí),它只是一個(gè)很底層的面向報(bào)表的存儲(chǔ)引擎。這個(gè)工具叫做Unireg。</p><p>  1990年,TcX的customer 中開(kāi)始有人要求要為它

65、的API提供SQL支持,Monty決心自己重寫一個(gè)SQL支持。1996年,MySQL 1.0發(fā)布,相當(dāng)于內(nèi)部發(fā)布。</p><p>  1996年10月,MySQL 3.11.1發(fā)布了,沒(méi)有2.x版本。最開(kāi)始,只提供了Solaris下的二進(jìn)制版本。一個(gè)月后,Linux版本出現(xiàn)了。MySql3.22應(yīng)該是一個(gè)標(biāo)志性的版本,提供了基本的SQL支持。</p><p>  MySql關(guān)系型數(shù)據(jù)庫(kù)于

66、1998年1月發(fā)行第一個(gè)版本。它使用系統(tǒng)核心提供的多線程機(jī)制提供完全的多線程運(yùn)行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等編程語(yǔ)言的編程接口(APIs),支持多種字段類型并且提供了完整的操作符支持查詢中的SELECT和WHERE操作。</p><p>  MySql是開(kāi)放源代碼的,因此任何人都可以在General Public License的許可下下載并根據(jù)個(gè)

67、性化的需要對(duì)其進(jìn)行修改。MySQL因?yàn)槠渌俣?、可靠性和適應(yīng)性而備受關(guān)注。</p><p>  1999-2000年,有一家公司在瑞典成立了,叫MySQL AB,雇了幾個(gè)人,與Sleepycat合作,開(kāi)發(fā)出了 Berkeley DB引擎, 因?yàn)锽DB支持事務(wù)處理,所以,MySQL從此開(kāi)始支持事務(wù)處理了。 </p><p>  2000年4月,MySQL對(duì)舊的存儲(chǔ)引擎進(jìn)行了整理,命名為MyIS

68、AM。同時(shí),2001年,Heikiki Tuuri向MySQL提出建議,希望能集成他們的存儲(chǔ)引擎InnoDB,這個(gè)引擎同樣支持事務(wù)處理,還支持行級(jí)鎖。</p><p>  MySql與InnoDB的正式結(jié)合版本是4.0。到了MySQL5.0,2003年12月,開(kāi)始有View,存儲(chǔ)過(guò)程之類。在2008年1月16號(hào) MySQL被Sun公司收購(gòu)。</p><p>  3.3.2 MySql的常用

69、命令</p><p> ?。?)使用SHOW語(yǔ)句找出在服務(wù)器上當(dāng)前存在什么數(shù)據(jù)庫(kù) </p><p>  mysql> SHOW DATABASES; </p><p> ?。?)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)MYSQLDATA </p><p>  mysql> CREATE DATABASE MYSQLDATA; </p><

70、;p> ?。?)選擇你所創(chuàng)建的數(shù)據(jù)庫(kù) </p><p>  mysql> USE MYSQLDATA; (按回車鍵出現(xiàn)Database changed 時(shí)說(shuō)明操作成功!) </p><p>  (4)查看現(xiàn)在的數(shù)據(jù)庫(kù)中存在什么表</p><p>  mysql> SHOW TABLES; </p><p>  (5)創(chuàng)建一個(gè)

71、數(shù)據(jù)庫(kù)表 </p><p>  mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));</p><p> ?。?)顯示表的結(jié)構(gòu) </p><p>  mysql> DESCRIBE MYTABLE; </p><p>  (7)往表中加入記錄</p>

72、<p>  mysql> insert into MYTABLE values (”hyq”,”M”); </p><p><b> ?。?)刪除表 </b></p><p>  mysql>drop TABLE MYTABLE;</p><p><b> ?。?)清空表 </b></p>

73、<p>  mysql>delete from MYTABLE;</p><p> ?。?0)更新表中數(shù)據(jù)</p><p>  mysql>update MYTABLE set sex=”f” where name=’hyq’; </p><p>  (11)數(shù)據(jù)庫(kù)/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限</p><p> ?、?ALT

74、ER: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引。 </p><p>  ② CREATE: 建立新的數(shù)據(jù)庫(kù)或數(shù)據(jù)表。 </p><p> ?、?DELETE: 刪除表的記錄。</p><p> ?、?DROP: 刪除數(shù)據(jù)表或數(shù)據(jù)庫(kù)。</p><p> ?、?INDEX: 建立或刪除索引。 </p><p> ?、?/p>

75、 INSERT: 增加表的記錄。</p><p>  ⑦ SELECT: 顯示/搜索表的記錄。</p><p> ?、?UPDATE: 修改表中已存在的記錄。</p><p>  3.3.3 MySql的重要特性</p><p>  (1)內(nèi)部結(jié)構(gòu)和可移植性;</p><p>  (2)極快的基于線程的內(nèi)存分配系統(tǒng);&

76、lt;/p><p><b> ?。?)列類型;</b></p><p><b> ?。?)語(yǔ)句和函數(shù);</b></p><p><b> ?。?)安全;</b></p><p><b> ?。?)連接性;</b></p><p><

77、;b> ?。?)本地化;</b></p><p> ?。?)客戶端和工具。</p><p><b>  4 設(shè)計(jì)和實(shí)現(xiàn)</b></p><p>  4.1 Gtk+界面設(shè)計(jì)</p><p> ?。?)服務(wù)器端運(yùn)行結(jié)果如圖所示:</p><p><b>  圖4-1 服務(wù)

78、器端</b></p><p>  (2)客戶端運(yùn)行結(jié)果如圖所示:</p><p><b>  圖 4-2 客戶端</b></p><p> ?。?)控制擺放流程圖</p><p>  本次實(shí)驗(yàn)設(shè)計(jì)到了hbox、vbox、text、entry以及button等控件的擺放及使用。首先在window窗口中放置一個(gè)h

79、box來(lái)方便后來(lái)其他控件的擺放??丶[放如下所示:</p><p>  圖 4-3 控制擺放流程圖</p><p><b>  4.2 連接數(shù)據(jù)庫(kù)</b></p><p><b>  (1)連接成功截圖</b></p><p>  圖 4-4 連接成功截圖</p><p>&

80、lt;b> ?。?)流程圖</b></p><p><b>  圖 4-5 流程圖</b></p><p>  4.3 網(wǎng)絡(luò)通信socket編程</p><p>  4.3.1 socket編程方法</p><p><b> ?。?)網(wǎng)絡(luò)連接函數(shù)</b></p>&l

81、t;p>  Socket 創(chuàng)建套接字</p><p>  Bind 綁定本機(jī)端口</p><p>  Connect 建立連接</p><p>  Listen 監(jiān)聽(tīng)端口</p><p>  Accept

82、 接受連接</p><p>  Recv,recvfrom 數(shù)據(jù)接收</p><p>  Send,sendto 數(shù)據(jù)發(fā)送</p><p>  Close,shutdown 關(guān)閉套接字</p><p><b>  (2)連接流程圖</b></p><p>

83、;  圖 4-6 連接流程圖</p><p>  4.3.2 客戶端/服務(wù)器工作流程</p><p><b>  1)服務(wù)器</b></p><p>  首先,應(yīng)該在服務(wù)器端使用Socket()建立一個(gè)通信端口,再用bind()命令把一個(gè)地址綁定到這個(gè)端口上。然后,服務(wù)器端使用listen()監(jiān)聽(tīng)連接請(qǐng)求,當(dāng)遠(yuǎn)程的客戶機(jī)試圖使用connect(

84、)連接listen()正在監(jiān)聽(tīng)的端口時(shí),連接將會(huì)在隊(duì)列中等待,直到使用accept()處理它。在accept()處理了連接請(qǐng)求之后,將會(huì)生成一個(gè)新的描述這個(gè)連接端口的套接字,利用這個(gè)套接字就可以發(fā)送和接收數(shù)據(jù)。如果listen()一直沒(méi)有監(jiān)聽(tīng)到連接請(qǐng)求,那么服務(wù)器任務(wù)就會(huì)在accept()處阻塞,直到有連接請(qǐng)求到來(lái)為止。</p><p><b>  2)客戶端</b></p>

85、<p>  客戶端處首先用Socket()建立一個(gè)通信端口,然后直接用connect()向指定的服務(wù)器發(fā)送連接請(qǐng)求,如果請(qǐng)求被接收,下一步就可以進(jìn)行數(shù)據(jù)通信了。</p><p><b>  3)函數(shù)格式</b></p><p>  (1)Socket() </p><p>  作用:socket函數(shù)為客戶機(jī)或服務(wù)器創(chuàng)建一個(gè)sokcet

86、</p><p>  格式:int socket(int family)</p><p>  Family 表示地址族</p><p> ?。?)bind( )</p><p>  作用:bind函數(shù)是將套接字綁定到IP地址</p><p>  格式: int bind(int sockfd,struct sockad

87、dr *addr,int addrlen)</p><p>  參數(shù)說(shuō)明:Sockfd:socket的文件描述符號(hào);Sockaddr:表示名字所用的一個(gè)數(shù)據(jù)結(jié)構(gòu),用來(lái)保存地址(包括IP地址和端口);Addrlen:設(shè)置結(jié)構(gòu)大小長(zhǎng)度。</p><p>  (3)listen()</p><p>  作用:監(jiān)聽(tīng)連接信號(hào),和accepted函數(shù)合同。</p>

88、<p>  格式: int listen(int sockfd)</p><p>  參數(shù)說(shuō)明:Sockfd:表示socket調(diào)用返回的文件描述符。</p><p> ?。?)accept()</p><p>  作用:與listen函數(shù)合用,監(jiān)聽(tīng)信息、接收客戶端請(qǐng)求。</p><p>  格式: Int accept (int

89、sockfd, void *addr, int *addrlen)</p><p>  參數(shù)說(shuō)明:Sockfd:表示socket的文件描述符;Addr:表示指向局部的數(shù)據(jù)結(jié)構(gòu)struct sockaddr-in的指針;Addrlen:表示地址的長(zhǎng)度。</p><p>  (5) connect()</p><p>  作用:在面向連接的系統(tǒng)中客戶及連接服務(wù)器時(shí)使用,

90、connect必須在bind后使用。</p><p>  格式: int connect( int sockfd , struct sockaddr *serv_addr , int addrlen)</p><p>  參數(shù)作用:Sockfd:表示socket的文件描述符;Serv-addr:表示村訪目的端口和ip地址(套接字)的數(shù)據(jù)結(jié)構(gòu)。</p><p>  (

91、6) send() 和 recv()</p><p>  Send作用:發(fā)送信息。</p><p>  格式1:Int send (int sockfd)</p><p>  Recv作用:用于流式socket、數(shù)據(jù)報(bào)socket內(nèi)部之間的通信。</p><p>  格式2:Int recv (int sockfd)</p>&

92、lt;p> ?。?)close( )</p><p>  格式:Close( int sockfd)</p><p>  4.3.3 結(jié)果截圖</p><p>  圖 4-6 結(jié)果截圖</p><p><b>  5 系統(tǒng)測(cè)試</b></p><p>  5.1 實(shí)現(xiàn)Gtk+界面設(shè)計(jì)<

93、/p><p>  (1)測(cè)試時(shí)出現(xiàn)的錯(cuò)誤</p><p>  在用Gtk+進(jìn)行界面設(shè)計(jì)時(shí),出現(xiàn)了很多意想不到的錯(cuò)誤,比如,剛開(kāi)始擺放控件時(shí)竟然把Vbox和Hbox弄反了,結(jié)果出現(xiàn)的圖形從豎著變成了橫著。在放完基本的按鈕時(shí)發(fā)現(xiàn)控件全部聚集在了一起,后來(lái)把所有的控件都放進(jìn)去才出現(xiàn)了正常的界面。</p><p>  界面剛出來(lái)時(shí),按鈕那一塊顯得特別擠,后來(lái)在同學(xué)的幫助下,知道

94、了需要改正一下后面的參數(shù),比如把0改為10,可以調(diào)節(jié)按鈕的外觀,使按鈕看上去顯得不那么小氣。在剛開(kāi)始加圖片時(shí),每次都是出來(lái)一個(gè)紅色的小叉叉,后來(lái)網(wǎng)上查了一下,原來(lái)是圖片放錯(cuò)了位置,圖片可以直接放進(jìn)程序的那個(gè)文件夾里。</p><p><b> ?。?)修改后截圖</b></p><p>  圖5-1 正確的服務(wù)器</p><p>  圖5-2

95、正確的客戶端</p><p>  5.2 實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)</p><p> ?。?)調(diào)試時(shí)出現(xiàn)的錯(cuò)誤</p><p>  在完成程序進(jìn)行測(cè)試時(shí),因?yàn)閿?shù)據(jù)庫(kù)連接出現(xiàn)問(wèn)題發(fā)送信息無(wú)法插入數(shù)據(jù)庫(kù),經(jīng)過(guò)更改后進(jìn)行了解決。</p><p>  查詢聊天記錄時(shí),顯示的聊天記錄一直向后排列,沒(méi)有換行顯示效果不好,解決方法:在每條數(shù)據(jù)顯示后插入換行,使其按發(fā)

96、送條數(shù)排列整齊。</p><p><b>  (2)修改后截圖</b></p><p>  圖5-3 修改后截圖</p><p>  5.3 實(shí)現(xiàn)socket通信</p><p> ?。?)測(cè)試時(shí)出現(xiàn)的錯(cuò)誤:運(yùn)行后出現(xiàn)界面,但輸入信息發(fā)送信息時(shí)界面消失。</p><p><b>  (2

97、)修改后截圖</b></p><p>  圖5-4 修改后截圖(服務(wù)器)</p><p>  圖5-4 修改后截圖(客戶端)</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 蔡建平.《軟件綜合開(kāi)發(fā)案例教程》--Linux、GCC、MySQL、Socket、Gtk+與開(kāi)發(fā)案例,2005

98、</p><p>  [2] 趙敏哲.《64位Linux操作系統(tǒng)與應(yīng)用實(shí)例》. 北京機(jī)械工業(yè)出版社,2001</p><p>  [3] 龐麗萍.《操作系統(tǒng)原理》(第三版). 武漢華中科技大學(xué)出版社,2000</p><p>  [4] 張饒學(xué).《計(jì)算機(jī)下載系統(tǒng)教程》(第二版).習(xí)題解答與實(shí)驗(yàn)指導(dǎo).北京清華大學(xué)出版社,2000</p><p>

99、;  [5] 李勝利, 龐麗萍.《操作系統(tǒng)》.武漢華中科技大學(xué)出版社,2002</p><p>  [6] 胡明慶, 高巍, 鐘梅.《操作系統(tǒng)教程與實(shí)驗(yàn)》.北京清華大學(xué)出版社,2007</p><p><b>  致謝</b></p><p>  通過(guò)本次課程設(shè)計(jì)對(duì)Linux網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì),確實(shí)積累和總結(jié)了不少的經(jīng)驗(yàn),鍛煉了我的獨(dú)立工作和實(shí)

100、際動(dòng)手能力,加深了對(duì)計(jì)算機(jī)網(wǎng)絡(luò)中socket工作原理及其相互聯(lián)系的認(rèn)識(shí),提高了對(duì)復(fù)雜的綜合性實(shí)踐環(huán)節(jié)具有分析問(wèn)題、解決問(wèn)題、概括總結(jié)的實(shí)際工作能力,對(duì)網(wǎng)絡(luò)編程項(xiàng)目的開(kāi)發(fā)、設(shè)計(jì)過(guò)程有初步認(rèn)識(shí)。</p><p>  經(jīng)過(guò)近了多次的設(shè)計(jì)和開(kāi)發(fā),ZZ聊天界面的設(shè)計(jì)設(shè)計(jì)完畢。其功能基本符合規(guī)定需求,能夠簡(jiǎn)單的網(wǎng)絡(luò)聊天功能。但是由于我學(xué)藝不精,還有許多不盡如人意的地方,還有待于我進(jìn)一步完善其功能。但我從中學(xué)到了不少的道理,真

101、正的理解到,理論與實(shí)踐之間還是有很大的距離,這必將有利于我以后的學(xué)習(xí)。使我明白,在以后的學(xué)習(xí)中,要不斷的完善自己的知識(shí)體系結(jié)構(gòu),注意理論與實(shí)踐的結(jié)合,學(xué)知識(shí)關(guān)鍵是要學(xué)活,而不能死記死搬書(shū)本上的知識(shí),關(guān)鍵是要會(huì)靈活應(yīng)用,這樣所學(xué)到的東西才真正的學(xué)以致用,才達(dá)到了學(xué)習(xí)的真正目的!</p><p>  在本次課題程序設(shè)計(jì)中,我學(xué)到了很多東西,通過(guò)本次課題程序設(shè)計(jì),無(wú)論在理論上還是在實(shí)踐中,我的計(jì)算機(jī)應(yīng)用水平得到了很大的

102、提升,這對(duì)于今后的工作和學(xué)習(xí)都是一種巨大的財(cái)富。 </p><p>  此次的課題設(shè)計(jì)讓我學(xué)到了很多知識(shí),跨越了傳統(tǒng)方式下的教與學(xué)的體制束縛,在設(shè)計(jì)過(guò)程中,通過(guò)查資料和搜集有關(guān)的文獻(xiàn),培養(yǎng)了自學(xué)能力和動(dòng)手能力,提升了知識(shí)利用率。</p><p><b>  附錄</b></p><p>  Gtk+界面設(shè)計(jì)代碼:</p>&l

103、t;p>  (1)服務(wù)器端代碼如下:</p><p>  int main(int argc,char *argv[])</p><p><b>  {</b></p><p>  GtkWidget *window;</p><p>  GtkWidget *vbox1,*vbox2;</p>&l

104、t;p>  GtkWidget *hbox1,*hbox2,*hbox3,*hbox4,*hbox5,*hbox6,*hbox7;</p><p>  GtkWidget *button1,*button2,*button3;</p><p>  GtkWidget *entry,*separator1,*separator2,*separator3,*view;</p>

105、<p>  GtkWidget *label1,*label2,*image1,*image2;</p><p>  GtkWidget *checkbutton1,*checkbutton2;</p><p>  gtk_init(&argc,&argv);</p><p>  window=gtk_window_new(GTK_WI

106、NDOW_TOPLEVEL);//創(chuàng)建窗體</p><p>  gtk_window_set_policy(GTK_WINDOW(window),FALSE,FALSE,TRUE);//窗口可變</p><p>  gtk_window_set_title(GTK_WINDOW(window),"Chat Window Server");//窗口名稱</p>

107、<p>  gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);//窗口位置</p><p>  gtk_window_set_default_size (GTK_WINDOW(window), 460,400);//窗口初始化</p><p>  gtk_container_set_border_wi

108、dth(GTK_CONTAINER(window),10);//邊框</p><p>  hbox1=gtk_hbox_new(FALSE,0);</p><p>  gtk_container_add(GTK_CONTAINER(window),hbox1);//將hbox1加入window </p><p>  vbox1=gtk_vbox_new(FAL

109、SE,0);</p><p>  gtk_box_pack_start(GTK_BOX(hbox1),vbox1,FALSE,FALSE,0);//將vbox1加入hbox1</p><p>  separator1=gtk_vseparator_new();</p><p>  gtk_box_pack_start(GTK_BOX(hbox1),separator

110、1,FALSE,FALSE,0);//將豎向分隔符放入hbox1中</p><p>  vbox2=gtk_vbox_new(FALSE,0);</p><p>  gtk_box_pack_start(GTK_BOX(hbox1),vbox2,FALSE,FALSE,0);//將vbox2加入hbox1</p><p>  view=gtk_scrolled_wi

111、ndow_new(NULL,NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(view),GTK_POLICY_AUTOMATIC,GTK_POLICY_ALWAYS);//設(shè)置豎向滾動(dòng)條</p><p>  text=gtk_text_view_new();</p><p>  gtk_box_pack_start(GTK

112、_BOX(vbox1),view,TRUE,TRUE,5);//將view放入vbox1中</p><p>  gtk_container_add(GTK_CONTAINER(view),text);//將text放入view中</p><p>  buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));</p><p&

113、gt;  separator2=gtk_hseparator_new();</p><p>  gtk_box_pack_start(GTK_BOX(vbox1),separator2,FALSE,FALSE,0);//將橫向分隔符放入vbox1中</p><p>  hbox2=gtk_hbox_new(FALSE,0);</p><p>  gtk_box_pa

溫馨提示

  • 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ù)僅提供信息存儲(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)論