版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于Linux平臺的局域網可語音的IM軟件的設計與實</p><p><b> 作者:</b></p><p><b> 專業(yè):軟件工程</b></p><p><b> 指導老師:</b></p><p><b> 摘要</b&g
2、t;</p><p> 隨著計算機網絡的日益普及人們通過網絡進行交流顯得越來越重要。于是出現(xiàn)了一系列的通信軟件。 </p><p> 自1990s四位以色列人推出的ICQ后,IM首次出現(xiàn),憑借實時在線的交互特性迅速風靡全球。如今,M軟件正逐漸成為一個集合了文字、視頻、音頻業(yè)務以及多種增值業(yè)務的多媒體網絡通信軟件,憑借其所具有的廉價性和方便性以及功能不斷完善,IM已經和WWW、Em
3、ail等一起成為網民們最喜愛的網絡服務之一。尤其在國內,騰訊QQ普及率遠高于Email,在部分中國網民眼中上網基本等價于使用QQ等。2014年4月11日晚間,騰訊QQ同時在線用戶數突破2億。</p><p> 本畢業(yè)設計就是模擬QQ聊天軟件,開發(fā)一個基于Linux平臺的局域網實時</p><p><b> 語音通信軟件。</b></p><p&
4、gt; 系統(tǒng)采用C/S架構,基于Linux平臺開發(fā),采用C++編程語言,由服務器端和客戶端程序組成,并使用QT進行圖形界面的設計。主要實現(xiàn)的是聊天軟件的部分功能,即文字聊天、語音聊天、保存用戶消息等等功能,主要完成任務包括服務器模塊的設計實現(xiàn)、文字聊天、保存用戶消息等等功能。通過運行、測試與分析,該功能聊天軟件運行穩(wěn)定、可靠,具有一定的實用價值。</p><p> 關鍵詞:Linux QT 局域網 網絡 音
5、頻 多線程 IM C/S</p><p><b> Abstract</b></p><p> Along with the high-speed development of the computer network echnology, various of applications based on network was born, like info
6、rmation releasing,</p><p> data sharing ... The development of the LAN is the ame fast. Some governments, enterprises and schools constitute a LAN first, then join into INTERNET. So the instant messenger in
7、 LAN was borned. </p><p> This dissertation focuses on the designing and implementation of Communication software on LAN. And a Communication software is built using QT on Linux. First, the Development envi
8、ronment, the Background and the technology are briefly introduced. Then the requirements analysis and systematic design of a Communication software is discussed in detail. And the implementation details of each function
9、 module, is given. Last, using the VM to test the software. </p><p> Keywords: Linux , QT, LAN, NetWork</p><p><b> 目錄</b></p><p><b> 一、前言</b></p>&
10、lt;p><b> 1.1 課題背景</b></p><p> 1.2 國內外研究現(xiàn)狀及發(fā)展趨勢</p><p> 1.3 本課題的研究的目的和意義</p><p><b> 關鍵技術</b></p><p> 2.1 Linux操作系統(tǒng)</p><p>
11、 2.1.1 什么是Linux系統(tǒng)</p><p> 準確的說,是指Linux的kernel(系統(tǒng)的核心程序),其內核版權屬于Linus Torvalds在GPL(GNU General Public License)版權協(xié)議下發(fā)行, 任何人都可以自由的復制(copy), 修改(change), 套裝分發(fā)(distribute),銷售,但是不可以在分發(fā)時加入任何限制, 而且所有原碼必須是公開的,所以任何人都
12、可以無償取得所有執(zhí)行文件和源代碼。 </p><p> 對于Linux用戶和系統(tǒng)管理員來,Linux是指包含Linux kernel、utilities (系統(tǒng)工具程序)以及application (應用軟件)的一個完整的操作系統(tǒng)。Linux的應用軟件是由自由軟件基金會(FSF)開發(fā)的,全世界許多熱心的程序員為Linux開發(fā)或移植了很多應用程序,包括X-Windows、Emacs、TCP/IP網絡(包括SLIP
13、/PPP/ISDN)等等?,F(xiàn)在Linux(包括內核和大量的應用程序)光是執(zhí)行程序就已經達到200M,完全安裝后的規(guī)模將更大(大約500M左右)。 </p><p> 從本質上講Linux是Unix的”克隆”或Unix風格的操作系統(tǒng),在源代碼級上兼容絕大部分的Unix標準(如IEEE POSIX),它遵從 POSIX規(guī)范,例如對于System V來說,把其上程序源代碼拿到 ,Linux下重新編譯后就可以運行。
14、</p><p> Linux的標志是可愛的企鵝,至于為什么選用企鵝Linus是這樣說的,別的都被他人用了企鵝,不是也非??蓯蹎?!由Linux作者發(fā)布的僅僅是一個內核而己有一些公司或組織把內核、源代碼及相關的應用程序組織在一起發(fā)行, 于是就產生了不同的Linux發(fā)行(distributor)版本, 比較著名的發(fā)行版本有RedHat、Ubuntu 、Debian 等。</p><p>
15、; 2.2.2 Linux的發(fā)展歷史</p><p> Linux的歷史可以追溯到1990年Linus Torvalds還是芬蘭赫爾辛基大學的一名學生用匯編語言寫了一個在80386保護模式下處理多任務切換的程序。1991年10月5號發(fā)布了Linux 0.0.2版本,這個版本已經可以運行bash(一種用戶與操作系統(tǒng)內核通訊的軟件)和gcc(GNU C編譯器)了。 </p><p>
16、 Linus從一開始就決定自由擴散Linux、包括源代碼他把源代碼發(fā)布在網上隨即就引起愛好者的注意,他們通過互連網也加入了Linux的內核開發(fā)工作,一大批高水平程序員的加入,使得Linux達到迅猛發(fā)展。到1993年底,Linux 1.0終于誕生。Linux 1.0已經是一個功能完備的操作系統(tǒng)了,其內核寫得緊湊高效,可以充分發(fā)揮硬件的性能,在4M內存的80386機器上也非常好。 </p><p> Linu
17、x加入GNU并遵循公共版權許可證(GPL)由于不排斥商家對自由軟件進一步開發(fā)不排斥在Linux上開發(fā)商業(yè)軟件,故而使Linux又開始了一次飛躍,出現(xiàn)了很多的Linux發(fā)行版,如Slackware、Redhat、TurboLinux等十多種,而且還在增加,還有一些公司在Linux上開發(fā)商業(yè)軟件或把其他Unix平臺的軟件移植到Linux上來,如今很多IT界的大腕如IBM、Intel、Oracle、Novell等都宣布支持Linux! 商
18、家的加盟彌補了純自由軟件的不足和發(fā)展障礙,Linux得以迅速普及。</p><p> 2.2.3 Ubuntu</p><p> Ubuntu是一個以桌面應用為主的Linux操作系統(tǒng),其名稱來自非洲南部祖魯語或豪薩語的“ubuntu”一詞(譯為友幫拓或烏班圖),意思是“人性”、“我的存在是因為大家的存在”,是非洲傳統(tǒng)的一種價值觀,類似華人社會的“仁愛”思想。Ubuntu基于Debian
19、發(fā)行版和GNOME桌面環(huán)境,與Debian的不同在于它每6個月會發(fā)布一個新版本。Ubuntu的目標在于為一般用戶提供一個最新的、同時又相當穩(wěn)定的主要由自由軟件構建而成的操作系統(tǒng)。Ubuntu具有龐大的社區(qū)力量,用戶可以方便地從社區(qū)獲得幫助。</p><p> Ubuntu 的版本號是根據其發(fā)布版本的日期而定。版本號由該次發(fā)布的年份和月份組成,并未反映其實際版本。Ubuntu的首次發(fā)布(Warty Warthog
20、)是在2004年10月,因此該版本為4.10。每六個月發(fā)布一個新版本,而每兩年發(fā)布一個長期支持版本(LTS)。 Ubuntu Jaunty Jackalope于2009年4月23日發(fā)布,因此版本號為9.04。Ubuntu Karmic Koala,即Ubuntu 9.10,于2009年10月29日發(fā)布。前一個長期支持版本(開發(fā)代號為Lucid Lynx)于2010年4月發(fā)布,其版本號為10.04 LTS。版本Ubuntu 11.10,開
21、發(fā)代號:“Oneiric Ocelot”,已經于2011年10月13日發(fā)布并提供下載。</p><p> 我用的是Ubuntu12.04.Ubuntu 12.04(代號Precise Pangolin) 已經于2012年的4月26日發(fā)布。</p><p> 2.2 數據庫SQLite</p><p> SQLite,是一款輕型的數據庫,是遵守ACID的關系型數
22、據庫管理系統(tǒng),它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于
23、2000年5月。 至今已經有13個年頭,SQLite也迎來了一個版本 SQLite 3已經發(fā)布。</p><p> SQLite是遵守ACID關系型數據庫管理系統(tǒng),它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目。[不像常見的客戶-服務器范例,SQLite引擎不是個程序與之通信的獨立進程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內的直接API調用。這在消耗
24、總量、延遲時間和整體簡單性上有積極的作用。整個數據庫(定義、表、索引和數據本身)都在宿主主機上存儲在一個單一的文件中。它的簡單的設計是通過在開始一個事務的時候鎖定整個數據文件而完成的。</p><p> 2.3 開發(fā)語言C++</p><p> C++程序設計語言是由來自AT&T Bell Laboratories的Bjarne Stroustrup設計和實現(xiàn)的,它兼具Simu
25、la語言在組織與設計方面的特性以及適用于系統(tǒng)程序設計的C語言設施。C++最初的版本被稱作“帶類的(C with Classes)[Stroustrup,1980],在1980年被第一次投入使用;當時它只支持系統(tǒng)程序設計和數據抽象技術。支持面向對象程序設計的語言設施在1983</p><p> 年被加入C++之后,面向對象設計方法和面向對象程序設計技術就逐漸進入了C++領域。在1985年,C++第一次投入商業(yè)市
26、場[Stroustrup,1986][Stroustrup,1986b]。在1987至1989年間支持范型程序設計的語言設施也被加進了C++[Ellis,1990][Stroustrup,1991]。 </p><p> 隨著若干獨立開發(fā)的C++實現(xiàn)產品的出現(xiàn)和廣泛應用,正式的C++標準化工作在1990年啟動。標準化工作由ANSI(American National Standard Institute)
27、以及后來加入的ISO(International Standards Organization)負責。1998年正式發(fā)布了C++語言的國際標準[C++,1998]。在標準化工作進展期間,標準委員會充當了一個重要的角色,其發(fā)布的C++標準之草案在正式標準發(fā)布之前,一直被作為過渡標準而存在。 </p><p> 2.4 Qt編程軟件</p><p> Qt是一個1991年由奇趣科技開發(fā)的跨
28、平臺C++圖形用戶界面應用程序開發(fā)框架。它既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式,比如控制臺工具和服務器。Qt是面向對象語言,易于擴展,并且允許組件編程。2008年,奇趣科技被諾基亞公司收購,QT也因此成為諾基亞旗下的編程語言工具。在發(fā)布Qt 4.6 的同時,作為 Qt 開發(fā)跨平臺IDE的Qt Creator 也發(fā)布了更新版本。Qt Creator 1.3 和 Qt 4.6共同構成的Qt SDK,包含了開發(fā)跨平臺應用程序所需的全
29、部功能。Qt Creator是一個用于Qt開發(fā)的輕量級跨平臺集成開發(fā)環(huán)境。Qt Creator可帶來兩大關鍵益處,提供首個專為支持跨平臺開發(fā)而設計的集成開發(fā)環(huán)境 (IDE)并確保首次接觸Qt框架的開發(fā)人員能迅速上手和操作。Qt Creator包含了一套用于創(chuàng)建和測試基于Qt應用程序的高效工具,包括:一個高級的C++代碼編輯器、上下文感知幫助系統(tǒng)、可視化調試器、源代碼管理、項目和構建管理工具。Qt Creator在LGPL2.1版本授權
30、下有效,并且接受代碼貢獻。</p><p> 2.5 Linux ALSA音頻編程</p><p> 2.5.1 ALSA聲音編程介紹</p><p> ALSA表示高級Linux聲音體系結構(Advanced Linux Sound Architecture)。它由一系列內核驅動,應用程序編譯接口(API)以及支持Linux下聲音的實用程序組成。這篇文章里,
31、我將簡單介紹 ALSA項目的基本框架以及它的軟件組成。主要集中介紹PCM接口編程,包括您可以自動實踐的程序示例。 您使用ALSA的原因可能就是因為它很新,但它并不是唯一可用的聲音API。如果您想完成低級的聲音操作,以便能夠最大化地控制聲音并最大化地提高性能,或者如果您使用其它聲音API沒有的特性,那么ALSA是很好的選擇。如果您已經寫了一個音頻程序,你可能想要為ALSA聲卡驅動添加本地支持。如果您對音頻不感興趣,只是想播放
32、音頻文件,那么高級的API將是更好的選擇,比如SDL,OpenAL以及那些桌面環(huán)境提供的工具集。另外,您只能在有ALSA 支持的Linux環(huán)境中使用ALSA。 2.5.2 ALSA歷史</p><p> ALSA項目發(fā)起的起因是Linux下的聲卡驅動(OSS/Free drivers)沒有得到積極的維護。并且落后于新的聲卡技術。Jaroslav Kysela早先寫了一個聲卡驅動,并由此開始了ALSA項
33、目,隨便,更多的開發(fā)者加入到開發(fā)隊伍中,更多的聲卡得到支持,API的結構也得到了重組。 Linux內核2.5在開發(fā)過程中,ALSA被合并到了官方的源碼樹中。在發(fā)布內核2.6后,ALSA已經內建在穩(wěn)定的內核版本中并將廣泛地使用。 2.5.3 數字音頻基礎</p><p> 聲音由變化的氣壓組成。它被麥克風這樣的轉換器轉換成電子形式。模/數(ADC)轉換器將模擬電壓轉換成離散的樣本值。聲音以
34、固定的時間間隔被采樣,采樣的速率稱為采樣率。把樣本輸出到數/模(DAC)轉換器,比如擴音器,最后轉換成原來的模擬信號。</p><p> 樣本大小以位來表示。樣本大小是影響聲音被轉換成數字信號的精確程度的因素之一。另一個主要的因素是采樣率。奈奎斯特(Nyquist)理論中,只要離散系統(tǒng)的奈奎斯特頻率高于采樣信號的最高頻率或帶寬,就可以避免混疊現(xiàn)象。 2.5.4 ALSA基礎</p><
35、;p> ALSA由許多聲卡的聲卡驅動程序組成,同時它也提供一個稱為libasound的API庫。應用程序開發(fā)者應該使用libasound而不是內核中的 ALSA接口。因為libasound提供最高級并且編程方便的編程接口。并且提供一個設備邏輯命名功能,這樣開發(fā)者甚至不需要知道類似設備文件這樣的低層接口。相反,OSS/Free驅動是在內核系統(tǒng)調用級上編程,它要求開發(fā)者提供設備文件名并且利用ioctrl來實現(xiàn)相應的功能。</p
36、><p> 為了向后兼容,ALSA提供內核模塊來模擬OSS,這樣之前的許多在OSS基礎上開發(fā)的應用程序不需要任何改動就可以在ALSA上運行。另外,libaoss庫也可以模擬OSS,而它不需要內核模塊。</p><p> ALSA包含插件功能,使用插件可以擴展新的聲卡驅動,包括完全用軟件實現(xiàn)的虛擬聲卡。ALSA提供一系列基于命令行的工具集,比如混音器(mixer),音頻文件播放器(aplay
37、),以及控制特定聲卡特定屬性的工具。 2.5.5 ALSA體系結構</p><p> ALSA API可以分解成以下幾個主要的接口:</p><p> 1 控制接口:提供管理聲卡注冊和請求可用設備的通用功能 </p><p> 2 PCM接口:管理數字音頻回放(playback)和錄音(capture)的接口。本文后續(xù)總結重點放在這個接口上,因為它是開發(fā)
38、數字音頻程序最常用到的接口。</p><p> 3 Raw MIDI接口:支持MIDI(Musical Instrument Digital Interface),標準的電子樂器。這些API提供對聲卡上MIDI總線的訪問。這個原始接口基于MIDI事件工作,由程序員負責管理協(xié)議以及時間處理。</p><p> 4 定時器(Timer)接口:為同步音頻事件提供對聲卡上時間處理硬件的訪問。&
39、lt;/p><p> 5 時序器(Sequencer)接口</p><p> 6 混音器(Mixer)接口 2.5.6 設備命名</p><p> API庫使用邏輯設備名而不是設備文件。設備名字可以是真實的硬件名字也可以是插件名字。硬件名字使用hw:i,j這樣的格式。其中i是卡號,j是這塊聲卡上的設備號。</p><p> 第一個
40、聲音設備是hw:0,0.這個別名默認引用第一塊聲音設備并且在本文示例中一真會被用到。</p><p> 插件使用另外的唯一名字,比如 plughw:,表示一個插件,這個插件不提供對硬件設備的訪問,而是提供像采樣率轉換這樣的軟件特性,硬件本身并不支持這樣的特性。 2.5.7 聲音緩存和數據傳輸</p><p> 每個聲卡都有一個硬件緩存區(qū)來保存記錄下來的樣本。當緩存區(qū)足夠滿時,聲
41、卡將產生一個中斷。內核聲卡驅動然后使用直接內存(DMA)訪問通道將樣本傳送到內存中的應用程序緩存區(qū)。類似地,對于回放,任何應用程序使用DMA將自己的緩存區(qū)數據傳送到聲卡的硬件緩存區(qū)中。這樣硬件緩存區(qū)是環(huán)緩存。也就是說當數據到達緩存區(qū)末尾時將重新回到緩存區(qū)的起始位置。ALSA維護一個指針來指向硬件緩存以及應用程序緩存區(qū)中數據操作的當前位置。從內核外部看,我們只對應用程序的緩存區(qū)感興趣,所以本文只討論應用程序緩存區(qū)。</p>
42、<p> 應用程序緩存區(qū)的大小可以通過ALSA庫函數調用來控制。緩存區(qū)可以很大,一次傳輸操作可能會導致不可接受的延遲,我們把它稱為延時(latency)。為了解決這個問題,ALSA將緩存區(qū)拆分成一系列周期(period)(OSS/Free中叫片斷fragments).ALSA以period為單元來傳送數據。</p><p> 一個周期(period)存儲一些幀(frames)。每一幀包含時間上一個
43、點所抓取的樣本。對于立體聲設備,一個幀會包含兩個信道上的樣本。分解過程:一個緩存區(qū)分解成周期,然后是幀,然后是樣本。左右信道信息被交替地存儲在一個幀內。這稱為交錯 (interleaved)模式。在非交錯模式中,一個信道的所有樣本數據存儲在另外一個信道的數據之后。</p><p> 2.5.8 Over and Under Run</p><p> 當一個聲卡活動時,數據總是連續(xù)地在硬
44、件緩存區(qū)和應用程序緩存區(qū)間傳輸。但是也有例外。在錄音例子中,如果應用程序讀取數據不夠快,循環(huán)緩存區(qū)將會被新的數據覆蓋。這種數據的丟失被稱為over run.在回放例子中,如果應用程序寫入數據到緩存區(qū)中的速度不夠快,緩存區(qū)將會"餓死"。這樣的錯誤被稱為"under run"。在ALSA文檔中,有時將這兩種情形統(tǒng)稱為"XRUN"。適當地設計應用程序可以最小化XRUN并且可以
45、從中恢復過來。 </p><p> 2.5.9 一個典型的聲音程序 </p><p> 使用PCM的程序通常類似下面的偽代碼:</p><p><b> 打開回放或錄音接口</b></p><p> 設置硬件參數(訪問模式,數據格式,信道數,采樣率,等等)</p><p> wh
46、ile 有數據要被處理: </p><p> 讀PCM數據(錄音)</p><p> 或 寫PCM數據(回放)</p><p><b> 關閉接口</b></p><p> 2.6 QT的TCP網絡編程</p><p> TCP即Transmission Control Prot
47、ocol,傳輸控制協(xié)議。與UDP不同,它是面向連接和數據流的可靠傳輸協(xié)議。也就是說,它能使一臺計算機上的數據無差錯的發(fā)往網絡上的其他計算機,所以當要傳輸大量數據時,我們選用TCP協(xié)議。</p><p> TCP協(xié)議的程序使用的是客戶端/服務器模式,在Qt中提供了QTcpSocket類來編寫客戶端程序,使用QTcpServer類編寫服務器端程序。我們在服務器端進行端口的監(jiān)聽,一旦發(fā)現(xiàn)客戶端的連接請求,就會發(fā)出ne
48、wConnection()信號,我們可以關聯(lián)這個信號到我們自己的槽函數,進行數據的發(fā)送。而在客戶端,一旦有數據到來就會發(fā)出readyRead()信號,我們可以關聯(lián)此信號,進行數據的接收。</p><p> 2.7 RTP/RTCP協(xié)議</p><p> 實時傳輸協(xié)議RTP(Realtime Transport Protocol):是針對Internet上多媒體數據流的一個傳輸協(xié)議, 由
49、IETF(Internet工程任務組)作為RFC1889發(fā)布。RTP被定義為在一對一或一對多的傳輸情況下工作,其目的是提供時間信息和實現(xiàn)流同步。RTP的典型應用建立在UDP(User Datagram Protocol,用戶數據包協(xié)議)上,但也可以在TCP(Transfer Control Protocol,傳輸控制協(xié)議)或ATM(Asynchronous Transfer Mode,異步傳輸模式)等其他協(xié)議之上工作。RTP本身只保證實
50、時數據的傳輸,并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。</p><p> 實時傳輸控制協(xié)議RTCP(Realtime Transport Control Protocol):負責管理傳輸質量在當前應用進程之間交換控制信息。在RTP會話期間,各參與者周期性地傳送RTCP包,包中含有已發(fā)送的數據包的數量、丟失的數據包的數量等統(tǒng)計資料,因此,服務器可以利用這
51、些信息動態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,故特別適合傳送網上的實時數據。</p><p><b> 系統(tǒng)需求分析</b></p><p><b> 3.1 項目總述</b></p><p> 隨著互聯(lián)網技術的發(fā)展,網上辦公、網上購物、網上交友
52、等正在以飛快的速度走進大眾的生活中,人們可以在網上做在現(xiàn)實生活中做的很多事情,而現(xiàn)實生活中最重要的一件事情就是交流,人與人的交流莫過于口頭直接進行交流最為直觀最為快捷。在這個“互聯(lián)網世界”的今天,為了方便內部人員進行實時交流,共同解決工作生活中遇到的困難,為企事業(yè)以及其它的局域網用戶帶來方便</p><p> 此次開發(fā)的即時通訊軟件可以作為局域網的交流工具使用,通信的安全性不是高</p><
53、p> ,但要求信息的響應速度要較快,讓用戶充分享受到網絡即時消息的方便和快捷。</p><p> 語音聊天是此即時通信系統(tǒng)的一個核心子模塊,它采用現(xiàn)代比較流行的網絡編程技術,面向各類企事業(yè)部門等局域網用戶,實現(xiàn)實時語音捕獲,音頻數據壓縮與發(fā)送,音頻數據接收與回放等功能,從而達到了實時語音通訊的目的,方便內部人員進行實時交流,共同解決工作生活中遇到的困難,為企事業(yè)以及其它的局域網用戶帶來方便。</p
54、><p> 3.2 系統(tǒng)總體需求分析</p><p> 該即時通訊軟件由服務器和客戶端兩部分組成,基于Linux平臺開發(fā),采用TCP/IP通信協(xié)議,語音模塊采用g72a算法壓縮,通過RTP/RTCP協(xié)議進行網絡傳輸。</p><p> 服務端是可以進行監(jiān)聽,記錄客戶端請求和驗證客戶端身份的合法性,并提供消息中轉服務;客戶端程序面向實際用戶,它有必要的界面的按鈕,向
55、用戶提供網絡即時消息的功能。</p><p> 本即時通訊系統(tǒng)包含如下基本功能:</p><p><b> 客戶端:</b></p><p><b> 注冊用戶</b></p><p><b> 用戶登錄</b></p><p> 獲取好友列表
56、并顯示好友狀態(tài)</p><p><b> 文字聊天</b></p><p><b> 語音聊天</b></p><p><b> 查看和修改用戶信息</b></p><p><b> 連接服務器</b></p><p>&l
57、t;b> 服務端</b></p><p><b> 啟動和停止服務器</b></p><p><b> 接收和回應客戶端</b></p><p><b> 轉發(fā)用戶之間的消息</b></p><p><b> 系統(tǒng)總體設計</b>
58、;</p><p><b> 4.1 總體架構</b></p><p> 正如前面所述,系統(tǒng)整體采用C/S架構模式,但具體實現(xiàn)細節(jié),本系統(tǒng)是基于C/S模式下的三層體系架構,即系統(tǒng)可以劃為三層,分別對應于數據庫服務層、聊天服務層、客戶層。</p><p> 其中數據庫服務層的主要工作是為聊天服務層提供數據存儲秘查詢的接口,并按設計的策略對數
59、據進行管理。</p><p> 聊天服務層的主要作用是提供與客戶端的交互式接口,為其提供用戶登錄、注冊、注銷、聊天消息轉等服務。</p><p> 另外聊天服務層還有一個作用,是借助于數據庫服務層的接口,進行數據的可靠性存儲與查詢。</p><p> 客戶層的主要作用是為用戶提供服務的操作接口,包括用戶登錄、用戶注冊、用戶聊天等服務。客戶層主要與聊天服務層進行
60、交互。</p><p> 系統(tǒng)部署架構如下圖:</p><p> 上圖是在宏觀層面上,展示了系統(tǒng)部署的場景,下面將從微觀層面入手,具體信息的流轉與處理入手,從每個功能的角度,講述系統(tǒng)的各個層是如何參與的。</p><p><b> 登錄功能</b></p><p><b> 注冊功能</b>
61、</p><p><b> 文本聊天功能</b></p><p><b> 語音聊天功能</b></p><p><b> 添加刪除好友功能</b></p><p><b> 4.2 服務器設計</b></p><p>
62、4.2.1 服務器設計原理</p><p> 在總體架構設計上,對聊天服務層的功能進行了界定,依照功能,聊天服務層(下面簡稱服務器端)的信息主要步驟如下。</p><p><b> 接收用戶請求信息</b></p><p> 解析用戶請求信息,根據不同的請求信息,執(zhí)行對應的處理,并返回給客戶端相應的回應消息</p><
63、p> 向數據庫中存入相應的信息</p><p> 每個用戶的請求,都會涉及到以上3個步驟,因此可以采用串行化的處理</p><p><b> 方式。</b></p><p> 4.2.2 服務器端的模塊</p><p> 根據上面的描述,服務端可以被劃成一個若干模塊。而各個模塊的定義如下所示:</p
64、><p><b> 數據接收與回應模塊</b></p><p><b> 業(yè)務服務模塊</b></p><p> 業(yè)務服務模塊是具體的服務模塊,它由若干個子模塊,包括登錄子模塊、注冊子模塊、文本聊天模塊、語音聊天模塊、添加好友子模塊等。</p><p><b> 數據寫入模塊</
65、b></p><p><b> 數據寫入模塊對應</b></p><p><b> 4.3 客戶端設計</b></p><p> 客戶端是采用QT進行可視化的設計,客戶端聊天服務器進行交互,也是采用TCP的方式進行通信,它也是由具體的業(yè)務模塊組成的。具體的業(yè)務模塊分為如下幾類:</p><p
66、><b> 登錄模塊</b></p><p><b> 注冊模塊</b></p><p><b> 文本聊天模塊</b></p><p><b> 語音聊天模塊</b></p><p><b> 添加刪除好友模塊</b>
67、;</p><p><b> 數據接收模塊</b></p><p><b> 其他輔助模塊</b></p><p> 4.4 通信協(xié)議設計</p><p> 在C/S網絡程序設計中,一個重要的工作是通信協(xié)議的設計,一個良好的、可擴展的通信協(xié)議是C/S項目成功的基礎。</p>&
68、lt;p> 當前有很多種方式設計通信協(xié)議。例如,可以采用XML格式、Json格式,以及類似TCP/IP數據報文的格式。</p><p> 在本項目中采用的是第三種方式,按數據包的方式設計通信協(xié)議。</p><p> 通過前面的需求分析可以得知,系統(tǒng)本身通信協(xié)議要涉及到登錄、注冊、文本聊天、語音聊天、退出等情況。</p><p> 4.5 數據庫表設計&
69、lt;/p><p> 在本系統(tǒng)中涉及到3張表的設計,分別為用戶信息表、好友表、臨時信息表,其中用戶信息表的作用是保存已注冊用戶的基本信息,用于處理用戶的登錄、注冊、狀態(tài);好友表用于記錄用戶之間的好友關系;臨時信息表用于記錄信息類型、發(fā)送者、接收者、文本聊天信息。</p><p> 在這三張表的設計如下所示。</p><p><b> 用戶信息表</
70、b></p><p><b> 系統(tǒng)詳細設計</b></p><p> 5.1 服務器詳細設計</p><p> 5.2 客戶端詳細設計</p><p> 5.2.1 連接服務器</p><p> 5.2.2 注冊模塊</p><p> 5.2.3 登錄模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于linux平臺的局域網云監(jiān)控系統(tǒng)的分析與實現(xiàn)
- 基于linux平臺的im軟件
- 基于Linux平臺的局域網云監(jiān)控系統(tǒng)的分析與實現(xiàn).pdf
- 基于局域網的聊天軟件的設計與實現(xiàn)(畢業(yè)論文)
- 基于Android平臺局域網即時通訊軟件的設計與實現(xiàn).pdf
- 局域網飛鴿傳書軟件的設計與實現(xiàn)
- 基于NP的可擴展虛擬局域網的實現(xiàn).pdf
- 基于Android的無線局域網實時語音通信系統(tǒng)設計與實現(xiàn).pdf
- 局域網飛鴿傳書軟件的設計與實現(xiàn).doc
- 小型局域網的設計與實現(xiàn)
- 基于局域網的安全審計組件的設計與實現(xiàn)
- 可擴展虛擬局域網驅動系統(tǒng)的設計與實現(xiàn).pdf
- 無線局域網中NAS的軟件設計與實現(xiàn).pdf
- Linux下無線局域網安全認證系統(tǒng)的設計與實現(xiàn).pdf
- _局域網監(jiān)聽軟件的設計與開發(fā).doc
- 基于無線局域網的Ad-Hoc仿真平臺的設計與實現(xiàn).pdf
- 無線局域網的設計與實現(xiàn)論文
- 基于Winsock的局域網監(jiān)控系統(tǒng)的設計與實現(xiàn).pdf
- 局域網共享的實現(xiàn)
- 基于LINUX的無線局域網芯片驅動程序的設計與開發(fā).pdf
評論
0/150
提交評論