畢業(yè)設計_即時通訊系統(tǒng)設計說明書_第1頁
畢業(yè)設計_即時通訊系統(tǒng)設計說明書_第2頁
畢業(yè)設計_即時通訊系統(tǒng)設計說明書_第3頁
畢業(yè)設計_即時通訊系統(tǒng)設計說明書_第4頁
畢業(yè)設計_即時通訊系統(tǒng)設計說明書_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、孝自理N及¥廣州學院Guangzhou College South China University of Technology本科畢業(yè)設計(論文)說明書即時通訊系統(tǒng)的設計與實現(xiàn)學 院計算機工程學院專業(yè)班級 09軟件工程1班I摘要即時通訊軟件是目前計算機用戶進行交流最普遍的方式之一,各種各樣的聊天軟件也 層出不窮;服務提供商也提供了越來越豐富的通訊服務功能。即時通信中最基本的功能就 是通過計算機之間的文本數(shù)據(jù)的互換的形式實現(xiàn)思想的交流和溝通,它的優(yōu)點是方便快捷,為人們之間創(chuàng)建了一種新型的、廉價的、快速的、簡便的溝通方式。閏屬鈔瘞啾5尻賴。本文分析了即時通訊系統(tǒng)的原理及其實現(xiàn)過程, 探

2、討了 Socket技術與多線程技術在C/S 模式下的局域網(wǎng)即時通訊系統(tǒng)的應用。本畢業(yè)設計就是模擬QQ聊天軟件,開發(fā)一個包括文字聊天、文件傳輸?shù)裙δ艿牧奶燔浖?。系統(tǒng)主要采用C/S架構、C#編程語言、.NET開發(fā)平臺、UDP通信協(xié)議以及Socket等技術來完成。主要實現(xiàn)的功能有注冊、登錄、聊天、發(fā) 送表情以及文件傳輸?shù)裙δ堋O到y(tǒng)采用客戶機/服務器(C/S)的模式設計,是一個三層C/S 結構,數(shù)據(jù)庫服務器、應用程序服務器端、應用程序客戶端,按照此設計思想,可以將任 務合理分配到客戶機端和服務器端,從而降低了系統(tǒng)的通信開銷。此系統(tǒng)共分為兩個模塊:客戶端模塊和服務器端模塊。通過運行、測試與分析,該多功能

3、聊天軟件運行穩(wěn)定、可靠, 具有一定的實用價值。溝燧金富愛建譴凈。關鍵詞:即時通訊;Socket; UDP; C#iiAbstractInstant messaging software is currently one of the most common computer users to communicate the way, a variety of chat software also emerge in an endless stream; the service provider offers more and more communication services. Insta

4、nt communication is the most basic function is the text data by computer are realized in the form of the exchange of ideas and communication, it has the advantage of convenience, as a new, cheap, fast, convenient way to communicate to create among the people 殘鷲樓靜鑄源湃淑塑髓This paper analyzes the princip

5、le of instant communication system and its realizing process, discussesthe application of Socket network technology and multithreading technology in CVS mode of instant messaging system. This graduation design is to simulate the QQ chat software, the development of a text chat, file transfer and oth

6、er functions of the chat software. The system mainly uses C/S architecture, C# programming language,.NET development platform, UDP protocol and Socket technology to complete. The main function of registration, login, chat, send expression and file transfer functions. The system uses a client / serve

7、r (C/S) mode design, is a three layer C/S structure, database server, application server, client application program, according to the design idea, the system uses the C/S structure, the rational allocation of tasks to the client side and server, which reduces the communication overhead system. This

8、 system consists of two modules: the client and server end module. Through testing and analysis, operation, this multi-function chat software is stable, reliable, and has a certain practical value 皆 鋼極mf!鎮(zhèn)檜豬錐。Key words: Instant Messager; Socket; UDP; C#iii摘 要II.彈貿攝爾霽斃撰磚鹵尻。AbstractI除養(yǎng)技篋顛W類蔣薔。第一章 緒 論廈

9、礴懇蹣駢畤翥繼騷。1.1 即時通信系統(tǒng)的概念常楨廣鯽獻選塊網(wǎng)糊目。1.2 國內外即時通訊的研究現(xiàn)狀 耨婭盡揖鶴慘屣蘢題!。1.3 本課題的意義與主要工作內容糜叢媽翅為贍債蛭練濟1.4 論文的組織結構2Tm圣僮齦訝驊汆。第二章需求分析和可行性分析 3嗆儼勻謂鱉調硯金帛。2.1 需求分析3臥瀉曾圣騁睨限期2.1.1 系統(tǒng)包含的功能 3鳳襪備鄱®輪爛薔。2.1.2 功能模塊轆熟俁閹圄閶鄴錢鼠2.2 系統(tǒng)可行性分析密搏鄉(xiāng)it懺簍鍥鈴短2.2.1 經濟可行性分析 瞿燮夥寤幸艮住鉉錨金市贅。2.2.2 人力可行性分析 掌曇JW遙閆擷凄。2.2.3 技術可行性分析 胸鋸詢矚稠.蹤韋輸?shù)浴?.3 開

10、發(fā)環(huán)境和相關技術介紹 5懶震彥決綏I1飴3E錦。2.3.1 開發(fā)環(huán)境5BB繪燎誅髏既尻。2.3.2 Microsoft Visual Studio 2010介紹 M籟饕逕瑣箝奧鷗婭番2.3.3 .NET平臺一氽旗黃碩飩芹齦話鷲。2.3.4 C#語言簡介6峰隔槿.相翱IB滎。2.3.5 Socket技術作側mwmi絢®j知仁2.3.6 TCP/IP協(xié)議昆縊蝶竟州嚴豪2.3.7 Client/Server結構(客戶端/服務器模式) 7相域勞肉皆癇嫦脛汆。2.4 本章小結7、滅縈歡蜴鷲金帛。第三章數(shù)據(jù)庫設計81mt出趣甲涉曜統(tǒng)簞3.1 SQL Server數(shù)據(jù)庫介紹810頑諂攆棒揣爨裁。3

11、.2 理論基礎&擻gBO遷擇植秘豫3.3 數(shù)據(jù)庫E-R圖 9嚕蟒富貿懇彈演頷泉。3.4 數(shù)據(jù)庫設計 9:鶴瓷贏事晴孫滋御贅。3.4.1 數(shù)據(jù)庫邏輯設計密闡IW逕醇嘯重晨涼。3.4.2 數(shù)據(jù)庫物理設計 1俗辭解諂動律瀉熟3.5 數(shù)據(jù)庫關系圖 1覲,緣錫囁函端鑄。3.6 本章小結1儂紿輜檄庫。第四章 詳細設計 M 與漬蟆俾閱剜鯽哥1藏。4.1 多線程設計 1.1封憂蔣氟if蒼,H蕖憫鷲。4.2 服務器的設計 12穎芻堇蟆悖億頓裳賠沈。4.3 數(shù)據(jù)庫連接14濫金詹理聚翅Pits窺聰。4.4 主要功能模塊介紹1.5 跳彝躋鰻鴻錢京。4.4.1 用戶注冊 1.5擠電爰結加噎嘵類。4.4.2 用戶

12、登錄 1.8賠旗申諂覦聚遼輩襪金卷。4.4.3 用戶聊天 23一碾髓丁決窿靜卜陽工4.4.4 添加好友 24裳檬祕Mffi顫諺劍羋藺。4.4.5 刪除好友26 倉姬世囑瓏言古鷲。4.5 本章小結27綻離璉頓娛蛭蠲/1。第五章重難點分析及解決方案 29驍顧烽翳默鬻穩(wěn)®厚5.1 服務器監(jiān)聽設計29瑣針煤曖憚銀韁歌箭涼。5.1.1 服務器端監(jiān)聽分析 29金留詩艷損樓條世5.1.2 核心、代碼展示 29櫛緞歐鋤素種胎瑤鏤。5.2 用戶注冊.30 轡憚楝剛殮撰瑤麗閹應。5.3 用戶登錄.31 崛揚斕滇淌輻浪興渙藺。5.4 發(fā)送表情與發(fā)送文件3 2 爵叁搪言內燼憂毀厲鷲。5.5 獲取好友列表 3

13、6則覦愜靠瘓K暉園棟沈。5.6 本章小結.37脹鰻彈奧秘舔戶攣鈕聰。第六章系統(tǒng)測試與發(fā)布38 BW廁壽朗誦幫廢捕叫6.1 系統(tǒng)測試 .38稟虛媛賑維案膿擴鵬梟。6.1.1 測試目的38 隔篁境鞋ff燒嗚舊指6.1.2 系統(tǒng)測試常用方法 38 氯嘮麓苣鞍斷者閽氤6.1.3 測試結果 39鋼榮產濤困藺。6.2 系統(tǒng)發(fā)布.40 ,卜懿磅愜觸樂鵬燼解鼠6.3 本章小結 .41 .飽競爭音旨微船癩別演。第七章 系統(tǒng)的不足與展望 .42因鉉俯歟謙.餃競蕩賺。7.1 系統(tǒng)的不足 .42瑩諧齷新賞組減。7.2 系統(tǒng)的展望 42 肅鵬鋪轎驟鐐縛褥耀。7.3 本章小結42納疇鰻吶mo膩鰲銀結論.43凰攆,浦鐵頻鈣

14、薊糾廟。參考文獻44滅曖駭舸昔IS靚饌H。致朗寸.45鎊鵬餉£伍鏢贊渾蒯留。V第一章緒論第一章緒論1.1 即時通信系統(tǒng)的概念即時通訊(Instant Messenger簡稱IM ),是指能夠即時發(fā)送和接收互聯(lián)網(wǎng)消息 等的業(yè)務。自1998年面世以來,特別是近幾年的迅速發(fā)展,即時通訊的功能日益豐 富,逐漸集成了電子郵件、博客、音樂、電視、游戲和搜索等多種功能。即時通訊不 再是一個單純的聊天工具,它已經發(fā)展成集交流、資訊、娛樂、搜索、電子商務、辦 公協(xié)作和企業(yè)客戶服務等為一體的綜合化信息平臺。是一種終端連網(wǎng)即時通訊網(wǎng)絡的服務。即時通訊不同于e-mail在于它的交談是即時的。大部分的即時通訊

15、服務提供了 狀態(tài)信息的特性一顯示聯(lián)絡人名單,聯(lián)絡人是否在在線與能否與聯(lián)絡人交談。攜頻噪障澇譴P!瀘。近年來,隨著無線通信的快速發(fā)展,移動互聯(lián)網(wǎng)為傳統(tǒng)的Internet注入了新的活力,同時也為即時通訊帶來了一場革命, 交互雙方已經不再局限于以網(wǎng)絡終端設備為 唯一的接入手段,PC機在傳統(tǒng)的網(wǎng)絡即時通訊中所起的作用正在被手機、平板電腦 所取代。這使得即時通訊更加大眾化和人性化,即使不會使用電腦的人現(xiàn)在也可以享受到即時通訊給人們帶來的變化。撤展雛紈顆鋅討躍滿雕縱觀即時通訊軟件業(yè)的迅速發(fā)展, 設計并開發(fā)一個即時通訊平臺,對于現(xiàn)階段的 學習和研究,都是極為有意義的,基于這個前提和起因,我選擇了設計即時通訊

16、系統(tǒng) 作為我的畢業(yè)設計。夾琬閭輪鼠檔驀遷鏤源1.2 國內外即時通訊的研究現(xiàn)狀從商業(yè)研究的方面看,即時通訊軟件從最初的免費政策,到逐漸挖掘和整合創(chuàng)新 多種盈利模式,即時通訊市場收入逐步擴大,而為企業(yè)用戶提供商務即時通訊的一整 套解決辦法將成為未來即時通訊企業(yè)角逐的熱點和盈利的新空間1。視黜饅碘椅腦鈞!即即時通訊運營商的盈利模式包括互聯(lián)網(wǎng)增值服務、無線網(wǎng)增值服務、廣告服務和 企業(yè)即時通訊服務。以前,即時通訊運營商的盈利方式還僅局限于互聯(lián)網(wǎng)即時通訊增 值業(yè)務,但是隨著市場的發(fā)展和功能的開發(fā),無線網(wǎng)絡增值業(yè)務和廣告業(yè)務更多的參 與到運營商整體收入中來2。囿微釗爵端球讖黛從學術化的即時通訊研究方面看,國

17、內外公開發(fā)表的論文非常少 3。僅有的幾篇 集中在即時通訊基本服務元素的定義方面4與即時通訊軟件技術實現(xiàn)、編程技巧等方 面5。還有部分關于安全性的討論6。篇彳翎喻麻喬級的喬斷總的說來,國內外關于即時通訊的研究還不夠系統(tǒng)和深入。1第二章需求分析和可行性分析1.3 本課題的意義與主要工作內容聊天軟件作為使用最為廣泛的即時性通訊工具,它在擁有文字聊天基礎功能的同時,為滿足用戶的需求,還增加了文件傳輸?shù)墓δ埽蔀楝F(xiàn)在最為主流的網(wǎng)上應用軟 件。本論文主要對聊天軟件的文字聊天、文件傳輸功能進行分析與研究,總結出實現(xiàn) 的相關理論與知識。雕懣軻金名僥張磔陣軫藹。本課題主要研究內容包括以下幾個方面:(1)查找相關

18、書籍與文獻,了解C/S構架并搭建.NET開發(fā)平臺(2)查找相關資料,學習C#開發(fā)語言以及SQL Server數(shù)據(jù)庫的使用,(3)查找現(xiàn)階段基于局域網(wǎng)的即時通訊軟件的發(fā)展現(xiàn)狀以及相關功能(4) Socket編程技術在上述基礎上,做出即時通訊軟件的相關功能如下:(1)用戶注冊功能(2)用戶登錄功能(3)添加好友功能(4)添加分組功能(5)刪除好友功能(6)刪除分組功能(7)移動好友到指定分組功能(8)即時聊天功能(9)文件傳輸功能1.4論文的組織結構第一章:緒論。第二章:需求分析和可行性分析,分析了系統(tǒng)的需求和系統(tǒng)實施的可行性。第三章:數(shù)據(jù)庫設計,介紹了本系統(tǒng)所使用的數(shù)據(jù)庫、數(shù)據(jù)庫的設計、數(shù)據(jù)庫E

19、-R圖以及數(shù)據(jù)庫關系圖。第四章:詳細設計,本章主要進行了系統(tǒng)的模塊設計,包括多線程設計、服務器 設計、數(shù)據(jù)庫連接以及闡述系統(tǒng)各功能模塊。厲騏鎏農殺情獄景則曬。第五章:重難點分析及解決方案,本章著重分析了本系統(tǒng)的重難點及其解決方案。第六章:系統(tǒng)測試與發(fā)布,本章主要介紹了系統(tǒng)測試的環(huán)節(jié)、展示了測試的結果 以及系統(tǒng)的發(fā)布。第七章:系統(tǒng)的不足與展望,主要陳述了本系統(tǒng)存在哪些不足的地方以及對系統(tǒng) 的展望。第二章需求分析和可行性分析2.1 需求分析此次開發(fā)的網(wǎng)絡聊天工具可作為企業(yè)局域網(wǎng)的交流工具使用,通信的安全性不是很高,但要求信息的響應速度要較快,讓用戶充分享受到網(wǎng)絡即時消息的方便和快捷。 本聊天工具由

20、服務器端程序和客戶端程序兩部分組成,整體采用.NET平臺開發(fā),采用UDP通信協(xié)議,使用Socket技術。服務器是可以進行監(jiān)聽,記錄客戶端請求和驗 證客戶端身份的合法性,客戶端程序面向實際用戶,它有必要的界面的按鈕,向用戶 提供網(wǎng)絡即時消息的功能。鍍鋅過潤啟麗駱蠲激 2.1.1系統(tǒng)包含的功能本聊天系統(tǒng)需包含如下基本功能:(1)客戶端的主要功能:用戶注冊 用戶登錄 添加好友 獲取好友列表 與好友聊天 發(fā)送表情功能 文件傳輸(2)服務器端的主要功能: 啟動服務 建立連接 監(jiān)聽客戶請求2.1.2功能模塊聊天工具由服務器端和客戶端組成, 要分析清楚兩方面所要完成的任務, 對設計 來說,等于完成了一半。根

21、據(jù)聊天的通信步驟,系統(tǒng)的功能模塊如圖 2-1所示。橙貳軻 譽箜該檻加增賽。(1)服務器端服務器端完成3大功能:建立連接、斷開連接、監(jiān)聽客戶請求。這 3大功能的具 體含義如下:建立連接:系統(tǒng)啟動時建立連接,綁定本地計算機的一個端口,不斷地監(jiān) 聽是否有客戶端請求連接或者斷開連接。斷開連接:停止監(jiān)聽,系統(tǒng)斷開連接。監(jiān)聽客戶請求:服務器端是個信息樞紐,所有向服務器端請求的客戶端的 信息都要傳到服務器端,再由服務器根據(jù)客戶端的請求按要求分發(fā)出去, 客戶端再向服務器端發(fā)送各種請求,如:登錄,發(fā)送消息,獲取好友列表 等。通駕賺隆賓唄擷鵡訟湊。圖2-1系統(tǒng)功能模塊圖(2)客戶端客戶端完成以下幾大功能:用戶注冊

22、、用戶登錄、添加好友、聊天功能、發(fā)送表 情、文件傳輸功能。用戶注冊:客戶端與服務器建立通信通道,服務就收客戶端的注冊請求。通過系統(tǒng)的注冊界面,輸入賬號和密碼,完成注冊。該棟諼礴豁中羸I轆錠。用戶登錄:客戶端與服務器建立通信通道,隨時接收來自服務器的監(jiān)聽。通過系統(tǒng)的登錄界面,輸入賬號和密碼,然后發(fā)送到服務器進行驗證。如果驗證通過,服務器則返回用戶的好友信息。郵女渾1W蘋埔品侖廟。添加好友:用戶在登錄系統(tǒng)之后可以添加好友。聊天功能:客戶在與好友建立通信連接后,便可以與好友進行聊天,聊天 時發(fā)送的是文本信息。發(fā)送表情功能:與好友聊天時,可在文本信息中插入表情。文件傳輸:用戶之間可以相互傳送文件以實現(xiàn)

23、文件共享2.2 系統(tǒng)可行性分析可行性分析(Feasibility Analysis)也稱為可行性研究,是在系統(tǒng)調查的基礎上, 針對新系統(tǒng)的發(fā)開是否具備必要性和可能性,對新系統(tǒng)的開發(fā)從各方面進行分析和研 究,以避免投資失誤,保證新系統(tǒng)的開發(fā)成功??尚行匝芯康哪康木褪怯米钚〉拇鷥r 在盡可能短的時間內確定問題是否能夠解決。膏熊訛嬲梗業(yè)燮塾羅斯。2.2.1 經濟可行性分析基于局域網(wǎng)、C/S架構的即時通訊系統(tǒng)在很多資料上都能找到,包括書本和網(wǎng)絡 上都有很多類似的系統(tǒng),開發(fā)這樣一個系統(tǒng)所需要的花費不是很大,需要的開發(fā)工具、 需要的軟件等都可以在網(wǎng)上找到試用版,不需要購買,所以不需要花費太多金錢,在經濟上完

24、全能夠完成本系統(tǒng)的設計。鰻崎婁悅溫鴨騫。2.2.2 人力可行性分析完成本系統(tǒng)不需要太多的人力資源,有老師和同學的幫助,也可以在網(wǎng)上找到與本系統(tǒng)相關的很多資源,在人力資源上能夠完成本系統(tǒng)的設計。描L虛絡涉鰻物薪予源。2.2.3 技術可行性分析基于.NET的即時通訊軟件,實現(xiàn)一般通訊軟件的基本功能(登錄,聊天,退出), 沒有十分復雜的其他功能,如:登錄、添加好友、與好友聊天、傳輸文件等基本的功 能,這些都能夠運用所學的知識實現(xiàn)。隸言匡熒鑒雅綱榭鬻臺饕本系統(tǒng)使用的編程語言是 C#語言,所使用的平臺是.NET平臺,對于VS2010的 使用還是比較熟悉。在校已學習過 C#編程。瀏期濯著捌票橫碗奏。完成這

25、個通訊軟件的基礎知識大都已經具備, 同時,在網(wǎng)上也可以找到許多資料, 如CSDN、看雪論壇等能夠查到許多開源源代碼,自己能夠充分運用這些網(wǎng)絡資源, 完成這個畢業(yè)設計。金巴煩罰檀筆磐颼鎘糊。2.3 開發(fā)環(huán)境和相關技術介紹2.3.1 開發(fā)環(huán)境本設計是一個局域網(wǎng)即時通訊軟件,要在短時間內開發(fā)出來并且滿足客戶要求,無論是硬件還是軟件都要選擇合適, 要求如下:開發(fā)設備完善;開發(fā)機器的性能必須 穩(wěn)定;操作系統(tǒng)的選擇應該適當;開發(fā)出的程序可以在盡可能多的平臺上運行;要求 運行機配置盡可能低檔。對此,我選擇的硬件環(huán)境和軟件環(huán)境如下:愜軌緝蕤紳頑陽豫tn。硬件環(huán)境(1)處理器:Intel Pentium PII

26、I或者更高的處理器(2)內存:256MB或更高(3)網(wǎng)絡:局域網(wǎng)軟件環(huán)境(1)操作系統(tǒng): Windows XP/Windows 7(2)開發(fā)平臺:Microsoft Visual Studio 2010(3)開發(fā)語言:C#(4)數(shù)據(jù)庫:SQL Server 20052.3.2 Microsoft Visual Studio 2010 介紹Visual Studio是微軟公司推出的開發(fā)環(huán)境。Visual Studio 2010同時帶來.NETFramework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-C

27、TP),并且支持開發(fā)面向 Windows的應用程序。貞廈給鰭1牽制麟留葡 2.3.3 .NET 平臺.NET就是微軟的用來實現(xiàn) XML , Web Services, SOA (面向服務的體系結構 service-oriented architecture和敏捷性的技術。.NET是微軟的新一代技術平臺,為敏 捷商務構建互聯(lián)互通的應用系統(tǒng),這些系統(tǒng)是基于標準的,聯(lián)通的,適應變化的,穩(wěn) 定的和高Tt能的。.NET是基于Windows操作系統(tǒng)運行的操作平臺,應用于互聯(lián)網(wǎng)的 分布式0嗜鰭級廚脹錮碉毀新。2.3.4 C#語言簡介C#是微軟公司發(fā)布的一種面向對象的、運行于.NET Framework之上的

28、高級程序 設計語言。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#起來與Java有 著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。它是微軟公司.NET windows網(wǎng)絡框架的主角。薊鎮(zhèn)豎牘紿蝌W鈴 騫。2.3.5 Socket 技術所謂Socket通常也稱作 篡接字”,應用程序通常通過 套接字”向網(wǎng)絡發(fā)出請求或 者應答網(wǎng)絡請求。根據(jù)連接啟動的方式以及本地套接字要連接的目標, 套接字之間的 連接過程可以分為三個步驟:服務器監(jiān)聽,客戶端請求,連接確認。 齡踐硯語蝸鑄轉黜®'裸。服務器監(jiān)聽:是服務器端套接字并

29、不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡狀態(tài)??蛻舳苏埱螅菏侵赣煽蛻舳说奶捉幼痔岢鲞B接請求,要連接的目標是服務器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然后就向服務器端套接字提出連接請求。紳藪瘡解牙標於夏連接確認:是指當服務器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請 求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發(fā)給客戶端,一旦客戶端確認了此描述,連接就建立好了。而服務器端套接字繼續(xù)處于 監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請求。飪夢獰廚若住卜誣苧徑凜。2.3.6 TCP/

30、IP 協(xié)議TCP/IP是國際互聯(lián)網(wǎng)所采用進行網(wǎng)際互連的通信協(xié)議7 ,實際所稱的TCP/IP協(xié) 議包括了在國際互聯(lián)網(wǎng)絡應用的一組協(xié)議,互聯(lián)網(wǎng)協(xié)議族是此協(xié)議族的另一個名字 80煌斃潛賁粵。TCP協(xié)議在因特網(wǎng)協(xié)議族(Internet protocol suite)四層協(xié)'議中,TCP層是位于IP層之上,應 用層之下的傳輸層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但 是IP層不提供這樣的流機制,而是提供不可靠的包交換。鑄豈濤孰躍輪前嫄鍵。TCP服務提供了可靠性、有效流控制、數(shù)據(jù)流傳輸、多路復用技術和全雙工操 作等。(2) UDP協(xié)議UDP是User Datagram Proto

31、col的簡稱, 中文名是用戶數(shù)據(jù)報協(xié)議,是 OSI參 考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規(guī)范。擷偽氫黜祇需鞫e龐。在選擇使用協(xié)議的時候,選擇 UDP必須要謹慎。在網(wǎng)絡質量令人不十分滿意的 環(huán)境下,UDP協(xié)議數(shù)據(jù)包丟失會比較嚴重。但是由于 UDP的特性:它不屬于連接型 協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點,所以通常音頻、視頻和普通數(shù)據(jù)在 傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數(shù)據(jù)包,也不會對接收結果產 生太大影響。比如我們聊天用的ICQ和QQ就是使用的UDP協(xié)議。蹤1摻釣K綾St發(fā)新。 2.3.7 Clie

32、nt/Server結構(客戶端/服務器模式)Client/Server或客戶/服務器模式:Client和Server常常分別處在相距很遠的兩臺 計算機上,Client程序的任務是將用戶的要求提交給 Server程序,再將Server程序返 回的結果以特定的形式顯示給用戶;Server程序的任務是接收客戶程序提出的服務請 求,進行相應的處理,再將結果返回給客戶程序。i機職金映蝕騫。2.4本章小結本章主要對本系統(tǒng)的相關技術進行介紹,對基于C/S即時通訊的原理有一定的了 解,對數(shù)據(jù)信息在網(wǎng)絡中傳輸?shù)脑矶加羞M一步的認識, 從需求分析和可行性分析出 發(fā)講述系統(tǒng)的系統(tǒng)設計架構、需求分析、技術可行性分析以

33、及對系統(tǒng)的開發(fā)環(huán)境和相 關技術進行了詳細的介紹。為設計本系統(tǒng)構建了一定的理論體系。鬻1摻銀錠試監(jiān)酬解I。第三章數(shù)據(jù)庫設計3.1 SQL Server數(shù)據(jù)庫介紹SQL Server是一個關系數(shù)據(jù)庫管理系統(tǒng)。它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的,于 1988年推出了第一個 OS/2版本。在 Windows NT推出后,Microsoft與Sybase在SQL Server的開發(fā)上就分道揚鑲了, Microsoft 將SQL Server移植到 Windows NT系統(tǒng)上,專注于開發(fā)推廣 SQL Server的Windows NT版本。Sybase則較

34、專注于SQL Server在UN IX操作系統(tǒng)上的應用。傳修執(zhí)解I號燎 月詹喻SQL是英文Structured Query Language勺縮寫,意思為結構化查詢語言。 SQL語 言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通。按照ANSI(美國國家標準協(xié)會)的規(guī)定,SQL被作為關系型數(shù)據(jù)庫管理系統(tǒng)的標準語言。SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。目前,絕大多 數(shù)流行的關系型數(shù)據(jù)庫管理系統(tǒng),如 Oracle, Sybase, Microsoft SQL Server, Access 者B采用了 SQL語言標準??b霞悵渙靚蟠淺舸明髓。3.2 理論基

35、礎設計關系數(shù)據(jù)庫時,遵循不同的規(guī)范要求,設計出合理的關系型數(shù)據(jù)庫,這些不 同的規(guī)范要求被稱為不同的范式, 各種范式呈遞次規(guī)范,越高的范式數(shù)據(jù)庫冗余越小 9。驥擅幟禳摩兗梗是絳粵。(1)第一范式(1NF)就是無重復的域。在任何一個關系數(shù)據(jù)庫中,第一范式是對關 系模式的設計基本要求,一般設計中都必須滿足第一范式。 不過有些關系模型中突破 了 1NF的限制,這種稱為非1NF的關系模型。換句話說,是否必須滿足 1NF的最低 要求,主要依賴于所使用的關系模型。癱喧導騁艷搗感搬I。(2)第二范式(2NF)要求實體的屬性完全依賴于主關鍵字。(3)第三范式(3NF)要求一個關系中不包含已在其它關系已包含的非主

36、鍵子信息。數(shù)據(jù)庫設計是進行系統(tǒng)開發(fā)的基礎性工作, 設計方案的好壞是影響開發(fā)的重要因 素。數(shù)據(jù)庫設計要遵循以下原則10: 鴿奪圓鰥腌翻蹦。(1)數(shù)據(jù)的完整性:保證數(shù)據(jù)庫中的數(shù)據(jù)準確。(2)數(shù)據(jù)的結構化:數(shù)據(jù)庫設計必須層次分明,分布合理。數(shù)據(jù)庫必須高度結構 化,保證數(shù)據(jù)的結構化、規(guī)范化和標準化。欖閾團皺鵬版蘊。(3)減少數(shù)據(jù)冗余:數(shù)據(jù)庫系統(tǒng)應該盡量減少數(shù)據(jù)冗余,節(jié)省存儲空間,提高數(shù) 據(jù)質量。消除數(shù)據(jù)庫表中非主屬性對主關鍵詞的非完全依賴性和非主屬性對主關鍵詞7第四章詳細設計的傳遞依賴性,將二維表轉化為第三范式,是降低數(shù)據(jù)冗余的有效方式。遜輸吳貝義鯽a力停猶疑。3.3 數(shù)據(jù)庫E-R圖用戶和好友關系之間

37、是多對多的關系, 一個用戶可以對應多個好友關系、 一種好 友關系只能對應一個用戶。數(shù)據(jù)庫 E-R圖如圖3-1所示。 帽覘匱駭ft紅鹵齡鐮潟。圖3-1數(shù)據(jù)庫E-R圖153.4 數(shù)據(jù)庫設計3.4.1 數(shù)據(jù)庫邏輯設計即時通訊系統(tǒng)總共使用到了兩張數(shù)據(jù)表,用戶信息表與用戶關系表。用戶信息表用來記錄所有已注冊的用戶的登錄賬戶、密碼、姓名等信息,userid即用戶賬號為主鍵,word用于保存密碼,name保存用戶名字,用戶信息表的詳細結 構如表3-1所示。言甬終決慎區(qū)面s側泉端表3-1用戶表列名數(shù)據(jù)類型是否主鍵可否為空useridvarchar(50)是否wordvarchar(50)否否namevarch

38、ar(50)否否好友關系表用來記錄用戶的好友關系,其中userid為主鍵,friendid用來記錄好友的ID, friendid不可以為空,好友關系表的詳細結構如表3-2所示。醫(yī)滌保削 1ml辦的臬表3-2好友關系表列名數(shù)據(jù)類型是否主鍵可否為空useridvarchar(50)是否friendidvarchar(50)否否3.4.2 數(shù)據(jù)庫物理設計(1)表名:用戶信息表此表用來記錄所有已注冊的用戶的登錄賬戶、密碼、性別等信息,userid即用戶賬號為主鍵。(2)表名:用戶關系表此表用來記錄用戶的好友關系信息,userid為主鍵。3.5 數(shù)據(jù)庫關系圖用戶信息表的主鍵tmid作為好友關系表rtmi

39、d和rfriend的外鍵,輸入好友的賬 號,添加成功后,好友的賬號將會顯示在好友列表中。臚當為送頭鹿鰭啰暈毒3.6 本章小結本章主要介紹了 SQL Server數(shù)據(jù)庫和數(shù)據(jù)庫的設計。數(shù)據(jù)庫設計又包括數(shù)據(jù)表 設計和存儲過程的設計。數(shù)據(jù)庫表主要存儲用戶信息和好友關系信息,即時通訊系統(tǒng) 連接數(shù)據(jù)庫后便可以讀取數(shù)據(jù)庫中的信息。鴿湊田輔幅燭屬獎選鋸。第四章詳細設計4.1 多線程設計服務器需要和多個客戶端同時進行通信,這就是服務器端的多線程。一旦服務器 發(fā)現(xiàn)一個新的客戶端與之建立了連接,就馬上新建一個線程與客戶端進行通信。用多線程的好處在于可以同時處理多個通信連接,不會出于由于數(shù)據(jù)排隊而發(fā)生的延遲或者丟失

40、,可以很好利用系統(tǒng)的性能11。期翱!植懷毓頤噪悅廢。點擊服務器端窗體的“開始服務”按鈕,調用 Listen開始監(jiān)聽,監(jiān)聽處理過程位 于單獨的線程中,Listen的實現(xiàn)方法如下:靠部f榮揄懸寓public void Listen(int Port)tryUDP_Server_Port = Port;UDP_Server = new UdpClient(Port);thdUdp = new Thread(new ThreadStart(GetUDPData); thdUdp.Start();catch (Exception e)if (Sock_Error!= null)Sock_Error(e.

41、ToString();點擊服務器端窗體的“停止服務”按鈕,調用CloseSock停止監(jiān)聽,CloseSock的實現(xiàn)方法如下:濤JOS鏤晉鐵鑄揪憲騙。public void CloseSock()Thread.Sleep(30);try UDP_Server.Close(); thdUdp.Abort();catch(Exception e) if (Sock_Error!= null)Sock_Error(e.ToString();當服務器端接收到客戶端的請求后,調用GetUDPData函數(shù)來分析并獲取客戶端的請求,并進行處理,GetUDPData的實現(xiàn)方法如下:鈿前斛瑞榭戴樣說瀉。publi

42、c void GetUDPData()while (true)trybyte口 RData = UDP_Server.Receive(ref _Server);if (DataArrival != null)DataArrival(RData, _Server.Address, _Server.Port);Thread.Sleep(0);catch (Exception e)if (Sock_Error != null)Sock_Error(e.ToString(); 4.2 服務器的設計服務器實現(xiàn)了服務器的多線程,服務器端有一個進程(或多個進程)在指定的端 口等待客戶的連接信息。一時連接成功

43、,就可以按設計的數(shù)據(jù)交換方法和格式進行數(shù) 據(jù)傳輸??蛻舳酥辉谛枰臅r候向服務端發(fā)出連接請求。戢曹加澆那適濘噂蜃服務器端主窗口如圖4-1所示。圖4-1服務器主窗口本窗體主要使用到了一個listview控件,分別用于顯示已連接用戶的ID、IP地址、 名字NAME、端口號Port, 2個Button控件。寺燥戶踐瀾點擊 開始服務”按鈕觸發(fā)Listen _Click事件,執(zhí)行此操作后,結束服務”按鈕的“Enabled(性變?yōu)椤皌rue, ”開始服務”按鈕的“Enabled!性變?yōu)?quot;false,既不再啟用 這些控件,具體代碼如下:囁奐酈諼跳謨瓚獸糞。private void Listen_Cl

44、ick(object sender, EventArgs e”酷鐮寵碓峻 禱臚貂 .sockUDP1 Listen(1433);button1.Enabled = false;button2.Enabled = true;其中 sockUDP1 Listen(1433)表示調用 sockUDP 的 tListen 開始監(jiān)聽。點擊“Stop®鈕觸發(fā)Stop _Click事件,執(zhí)行此操作后,“Sto限鈕的“Enabled” 屬性變?yōu)椤癴alse,班重新開始啟用這些控件,其代碼如下:典頂鱷筍類言曼蛛紀思愿private void Stop_Click(object sender, Even

45、tArgs e)吉釋蹌劍福綻 蘊 sockUDP1.CloseSock();button1.Enabled =true;button2.Enabled =false;其中sockUDP1.CloseSock(/示調用sockUDP的CloseSock停止監(jiān)聽。登錄客戶 端之前要先打開服務器端的“Listener®體,點擊 開始服務”按鈕。南出金商縹評緡肅群賞4.3 數(shù)據(jù)庫連接本系統(tǒng)采用的數(shù)據(jù)庫是 SQL Server 2005,首先要安裝SQL Server 2005主要操作:安裝SQL Server 2005組件、安裝服務器、填寫本地計算機、新的SQL Server實例或安裝客服端

46、工具、安裝服務器和客戶端、填寫公司與名稱、接受協(xié)議、 設置用戶賬戶、進行身份驗證等。爺纜金巨判翻喘煤箋除安裝后,建立一個名為Myqq的數(shù)據(jù)庫,保存注冊的用戶信息和用戶之間的關系。在Visual Studio 2010的應用程序中添加一個名為SqlHelp的類來連接數(shù)據(jù)庫。連 接字符串為 private static string conn = new SqlConnection("Data Source=.;Initial Catalog=MYqq;Integrated Secuhty=True");其中使用 getconn函數(shù)打開連接,具體代碼 如下:鍥熾崎曾薩蜷竇補飆黑

47、public void getconn() conn = new SqlConnection("Data Source=.;Initial Catalog=MYqq;Integrated Security=True");噱倉戈本道t 稠屈® 諂璋鳳try conn.Open();catch (Exception ee) MessageBox.Show('數(shù)據(jù)庫連接錯誤!"); closeconn函數(shù)關閉連接,具體代碼如下:public void closeconn() conn.Close();getselect函數(shù)為查詢數(shù)據(jù)庫,返回查詢結果,其

48、中getselect具體代碼如下:public SqlDataReader getselect(string sql)if(conn=null)getconn();SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader rs = cmd.ExecuteReader(); return rs;Change函數(shù)為添加、刪除或修改數(shù)據(jù)庫,其中Change具體代碼如下:public int change(string sql)int i=0;if(conn=null)getconn();trySqlCommand cmd=new SqlComm

49、and(sql,conn);i=cmd.ExecuteNonQuery();catch(Exception ee) MessageBox.Show(ee.Message); return i; 客戶端進行注冊、登錄、添加好友等操作都會用到數(shù)據(jù)庫,由服務器端連接數(shù) 據(jù)庫獲取數(shù)據(jù)再返回給客戶端。4.4 主要功能模塊介紹4.4.1 用戶注冊服務器端:調用up_PRegist向數(shù)據(jù)庫表中添加新用戶,返回用戶狀態(tài)及 id。服 務器在收到客戶端的數(shù)據(jù)后,對數(shù)據(jù)進行解析并為用戶注冊,并將返回的結果使用原 socket通道發(fā)送給客戶端。關鍵代碼如下: 醇庫蹤僉設腳瀕諂string returnmes =&qu

50、ot;"string regmes = new ClassSerializers().DeSerializeBinary(new System.IO.MemoryStream(msg.MsgContent) as string;解賊洋責深鋸string allm=regmes.Split('/');SQLhelp help = new SQLhelp();help.getconn();try 第四章詳細設計int i= help.change("insert into userinfo(word,name) values," + allm0 + &

51、quot;','" + allm2 + "')");訊通融國賀粽樞輒鎖翼catch (Exception ee)MessageBox.Show(ee.Message); trySqlDataReader rs2 = help.getselect("select top 1 * from userinfo order by UserID desc");完!«閑乾鰥擦鈕襟藪 if (rs2.HasRows) rs2.Read();returnmes= rs2.GetInt32(0).ToString(); rs2.

52、Dispose(); catch (Exception ee) MessageBox.Show(ee.Message); help.closeconn();ClassMsg msg3 = new ClassMsg(8, "", newClassSerializers().SerializeBinary(returnmes).ToArray()牌麻鰭適籃異銅鸛票SendMsgToOne(IPAddress.Parse(allm3), int.Parse(allm4), msg3押解蜀 到4妥嬋鏘戶潑。注冊頁面如圖4-2所示。用戶注冊包括填寫用戶賬號,密碼,名字等,如果用戶填寫

53、的信息有誤,如:兩 次輸入的密碼不相同,系統(tǒng)將提示注冊有誤,則需要重新填寫信息。瞇瞅艮癩嘮閣蹺蜃本窗體主要使用了 4個Label控件,分別用于顯示密碼、確認密碼以及名字; 2 個Button控件用于確認注冊與取消,3個TextBox控件用于注冊時用戶填寫密碼、 確 認密碼以及名字等信息。閔n韻雕s雋剜頌im。點擊 提交”按鈕觸發(fā)btnSubmit_Click事件,客戶端驗證注冊信息正確以后便向服務器發(fā)送注冊請求,服務器驗證信息后便在用戶表中插入新用戶數(shù)據(jù),便自動生成ID號,最后將ID返回到客戶端,用戶便可根據(jù)此ID進行登錄聊天系統(tǒng),其中 btnSubmit_Click事件具體代碼如下:楝獴&#

54、165;開閾燈傘饃言皆糧。圖4-2用戶注冊界面private void btnSubmit_Click(object sender, EventArgs e)侑 絆,留鵝酗嚶縱 if (word1.Text = "" | word2.Text ="")MessageBox.Show('密碼不能為空!");else if (word1.Text != word2.Text)MessageBox.ShowC兩次輸入密碼不一樣!");else if (word1.Text.Length < 6 | word2.Text.Len

55、gth < 6片鈾健遷馀霸修鸞覲 黑MessageBox.ShowC密碼不能少于五位!"); else ClassMsg msg = new ClassMsg(3, "", newClassSerializers().SerializeBinary(word1.Text + "/" + word2.Text + "/" + regname.Text + "/" + Program.ip + "/" + Program.port.ToString().ToArray();調碎鸚震鉞

56、饅提劌藪 sendMsgToServer(msg);label7.Text ="請稍等" 通過判斷密碼是否為空、兩次密碼是否一致已經密碼是否少于五位來驗證用戶輸 入信息的準確性,當通過驗證后,則調用sendMsgToServer函數(shù)向服務器發(fā)送注冊請求。最后清空各個輸入框中字符。根據(jù)服務器返回的結果彈出對應的MessageBox對話框,回復至ij登陸窗口。屬聳如f鰭晉兗堇腰。sendMsgToServer函數(shù)的實現(xiàn)方法如下:public void sendMsgToServer(ClassMsg msg) this.sockUDP2.Send(this.ServerIP,

57、this.ServerPort, new ClassSerializers().SerializeBinary(msg).ToArray();苧諼蕤雇黃暹閂譽東犀 4.4.2用戶登錄服務器獲得客戶端發(fā)送來的用戶名和密碼,然后查詢數(shù)據(jù)庫的相應的用戶列 表,如果該用戶不存在或用戶名與密碼不匹配服務器將驗證失敗的結果還回給客戶 端,驗證過程終止。如果驗證通過,則成功登錄系統(tǒng),登錄認證的流程如圖4-3所示。編攝襦倭憚嚕緡贊。Server簞嗇癲瀏凈趕鉤婿鱷鳧。圖4-3用戶登錄認證流程圖服務器端:登陸時,則調用服務器端在收到來自客戶端的數(shù)據(jù)后解析數(shù)據(jù)包,當識別數(shù)據(jù)模式為NewUserLogin函數(shù)處理登錄邏輯。在這個函數(shù)里

溫馨提示

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

評論

0/150

提交評論