版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、孝自理N及¥廣州學(xué)院Guangzhou College South China University of Technology本科畢業(yè)設(shè)計(jì)(論文)說明書即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 院計(jì)算機(jī)工程學(xué)院專業(yè)班級(jí) 09軟件工程1班I摘要即時(shí)通訊軟件是目前計(jì)算機(jī)用戶進(jìn)行交流最普遍的方式之一,各種各樣的聊天軟件也 層出不窮;服務(wù)提供商也提供了越來越豐富的通訊服務(wù)功能。即時(shí)通信中最基本的功能就 是通過計(jì)算機(jī)之間的文本數(shù)據(jù)的互換的形式實(shí)現(xiàn)思想的交流和溝通,它的優(yōu)點(diǎn)是方便快捷,為人們之間創(chuàng)建了一種新型的、廉價(jià)的、快速的、簡(jiǎn)便的溝通方式。閏屬鈔瘞啾5尻賴。本文分析了即時(shí)通訊系統(tǒng)的原理及其實(shí)現(xiàn)過程, 探
2、討了 Socket技術(shù)與多線程技術(shù)在C/S 模式下的局域網(wǎng)即時(shí)通訊系統(tǒng)的應(yīng)用。本畢業(yè)設(shè)計(jì)就是模擬QQ聊天軟件,開發(fā)一個(gè)包括文字聊天、文件傳輸?shù)裙δ艿牧奶燔浖O到y(tǒng)主要采用C/S架構(gòu)、C#編程語言、.NET開發(fā)平臺(tái)、UDP通信協(xié)議以及Socket等技術(shù)來完成。主要實(shí)現(xiàn)的功能有注冊(cè)、登錄、聊天、發(fā) 送表情以及文件傳輸?shù)裙δ?。系統(tǒng)采用客戶機(jī)/服務(wù)器(C/S)的模式設(shè)計(jì),是一個(gè)三層C/S 結(jié)構(gòu),數(shù)據(jù)庫(kù)服務(wù)器、應(yīng)用程序服務(wù)器端、應(yīng)用程序客戶端,按照此設(shè)計(jì)思想,可以將任 務(wù)合理分配到客戶機(jī)端和服務(wù)器端,從而降低了系統(tǒng)的通信開銷。此系統(tǒng)共分為兩個(gè)模塊:客戶端模塊和服務(wù)器端模塊。通過運(yùn)行、測(cè)試與分析,該多功能
3、聊天軟件運(yùn)行穩(wěn)定、可靠, 具有一定的實(shí)用價(jià)值。溝燧金富愛建譴凈。關(guān)鍵詞:即時(shí)通訊;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.彈貿(mào)攝爾霽斃撰磚鹵尻。AbstractI除養(yǎng)技篋顛W類蔣薔。第一章 緒 論廈
9、礴懇蹣駢畤翥繼騷。1.1 即時(shí)通信系統(tǒng)的概念常楨廣鯽獻(xiàn)選塊網(wǎng)糊目。1.2 國(guó)內(nèi)外即時(shí)通訊的研究現(xiàn)狀 耨婭盡揖鶴慘屣蘢題!。1.3 本課題的意義與主要工作內(nèi)容糜叢媽翅為贍債蛭練濟(jì)1.4 論文的組織結(jié)構(gòu)2Tm圣僮齦訝驊汆。第二章需求分析和可行性分析 3嗆儼勻謂鱉調(diào)硯金帛。2.1 需求分析3臥瀉曾圣騁睨限期2.1.1 系統(tǒng)包含的功能 3鳳襪備鄱®輪爛薔。2.1.2 功能模塊轆熟俁閹圄閶鄴錢鼠2.2 系統(tǒng)可行性分析密搏鄉(xiāng)it懺簍鍥鈴短2.2.1 經(jīng)濟(jì)可行性分析 瞿燮夥寤幸艮住鉉錨金市贅。2.2.2 人力可行性分析 掌曇JW遙閆擷凄。2.2.3 技術(shù)可行性分析 胸鋸詢矚稠.蹤韋輸?shù)浴?.3 開
10、發(fā)環(huán)境和相關(guān)技術(shù)介紹 5懶震彥決綏I1飴3E錦。2.3.1 開發(fā)環(huán)境5BB繪燎誅髏既尻。2.3.2 Microsoft Visual Studio 2010介紹 M籟饕逕瑣箝奧鷗婭番2.3.3 .NET平臺(tái)一氽旗黃碩飩芹齦話鷲。2.3.4 C#語言簡(jiǎn)介6峰隔槿.相翱IB滎。2.3.5 Socket技術(shù)作側(cè)mwmi絢®j知仁2.3.6 TCP/IP協(xié)議昆縊蝶竟州嚴(yán)豪2.3.7 Client/Server結(jié)構(gòu)(客戶端/服務(wù)器模式) 7相域勞肉皆癇嫦脛汆。2.4 本章小結(jié)7、滅縈歡蜴鷲金帛。第三章數(shù)據(jù)庫(kù)設(shè)計(jì)81mt出趣甲涉曜統(tǒng)簞3.1 SQL Server數(shù)據(jù)庫(kù)介紹810頑諂攆棒揣爨裁。3
11、.2 理論基礎(chǔ)&擻gBO遷擇植秘豫3.3 數(shù)據(jù)庫(kù)E-R圖 9嚕蟒富貿(mào)懇彈演頷泉。3.4 數(shù)據(jù)庫(kù)設(shè)計(jì) 9:鶴瓷贏事晴孫滋御贅。3.4.1 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)密闡IW逕醇嘯重晨涼。3.4.2 數(shù)據(jù)庫(kù)物理設(shè)計(jì) 1俗辭解諂動(dòng)律瀉熟3.5 數(shù)據(jù)庫(kù)關(guān)系圖 1覲,緣錫囁函端鑄。3.6 本章小結(jié)1儂紿輜檄庫(kù)。第四章 詳細(xì)設(shè)計(jì) M 與漬蟆俾閱剜鯽哥1藏。4.1 多線程設(shè)計(jì) 1.1封憂蔣氟if蒼,H蕖憫鷲。4.2 服務(wù)器的設(shè)計(jì) 12穎芻堇蟆悖億頓裳賠沈。4.3 數(shù)據(jù)庫(kù)連接14濫金詹理聚翅Pits窺聰。4.4 主要功能模塊介紹1.5 跳彝躋鰻鴻錢京。4.4.1 用戶注冊(cè) 1.5擠電爰結(jié)加噎嘵類。4.4.2 用戶
12、登錄 1.8賠旗申諂覦聚遼輩襪金卷。4.4.3 用戶聊天 23一碾髓丁決窿靜卜陽工4.4.4 添加好友 24裳檬祕(mì)Mffi顫諺劍羋藺。4.4.5 刪除好友26 倉(cāng)姬世囑瓏言古鷲。4.5 本章小結(jié)27綻離璉頓娛蛭蠲/1。第五章重難點(diǎn)分析及解決方案 29驍顧烽翳默鬻穩(wěn)®厚5.1 服務(wù)器監(jiān)聽設(shè)計(jì)29瑣針煤曖憚銀韁歌箭涼。5.1.1 服務(wù)器端監(jiān)聽分析 29金留詩(shī)艷損樓條世5.1.2 核心、代碼展示 29櫛緞歐鋤素種胎瑤鏤。5.2 用戶注冊(cè).30 轡憚楝剛殮撰瑤麗閹應(yīng)。5.3 用戶登錄.31 崛揚(yáng)斕滇淌輻浪興渙藺。5.4 發(fā)送表情與發(fā)送文件3 2 爵叁搪言內(nèi)燼憂毀厲鷲。5.5 獲取好友列表 3
13、6則覦愜靠瘓K暉園棟沈。5.6 本章小結(jié).37脹鰻彈奧秘舔戶攣鈕聰。第六章系統(tǒng)測(cè)試與發(fā)布38 BW廁壽朗誦幫廢捕叫6.1 系統(tǒng)測(cè)試 .38稟虛媛賑維案膿擴(kuò)鵬梟。6.1.1 測(cè)試目的38 隔篁境鞋ff燒嗚舊指6.1.2 系統(tǒng)測(cè)試常用方法 38 氯嘮麓苣鞍斷者閽氤6.1.3 測(cè)試結(jié)果 39鋼榮產(chǎn)濤困藺。6.2 系統(tǒng)發(fā)布.40 ,卜懿磅愜觸樂鵬燼解鼠6.3 本章小結(jié) .41 .飽競(jìng)爭(zhēng)音旨微船癩別演。第七章 系統(tǒng)的不足與展望 .42因鉉俯歟謙.餃競(jìng)蕩賺。7.1 系統(tǒng)的不足 .42瑩諧齷新賞組減。7.2 系統(tǒng)的展望 42 肅鵬鋪轎驟鐐縛褥耀。7.3 本章小結(jié)42納疇鰻吶mo膩鰲銀結(jié)論.43凰攆,浦鐵頻鈣
14、薊糾廟。參考文獻(xiàn)44滅曖駭舸昔IS靚饌H。致朗寸.45鎊鵬餉£伍鏢贊渾蒯留。V第一章緒論第一章緒論1.1 即時(shí)通信系統(tǒng)的概念即時(shí)通訊(Instant Messenger簡(jiǎn)稱IM ),是指能夠即時(shí)發(fā)送和接收互聯(lián)網(wǎng)消息 等的業(yè)務(wù)。自1998年面世以來,特別是近幾年的迅速發(fā)展,即時(shí)通訊的功能日益豐 富,逐漸集成了電子郵件、博客、音樂、電視、游戲和搜索等多種功能。即時(shí)通訊不 再是一個(gè)單純的聊天工具,它已經(jīng)發(fā)展成集交流、資訊、娛樂、搜索、電子商務(wù)、辦 公協(xié)作和企業(yè)客戶服務(wù)等為一體的綜合化信息平臺(tái)。是一種終端連網(wǎng)即時(shí)通訊網(wǎng)絡(luò)的服務(wù)。即時(shí)通訊不同于e-mail在于它的交談是即時(shí)的。大部分的即時(shí)通訊
15、服務(wù)提供了 狀態(tài)信息的特性一顯示聯(lián)絡(luò)人名單,聯(lián)絡(luò)人是否在在線與能否與聯(lián)絡(luò)人交談。攜頻噪障澇譴P!瀘。近年來,隨著無線通信的快速發(fā)展,移動(dòng)互聯(lián)網(wǎng)為傳統(tǒng)的Internet注入了新的活力,同時(shí)也為即時(shí)通訊帶來了一場(chǎng)革命, 交互雙方已經(jīng)不再局限于以網(wǎng)絡(luò)終端設(shè)備為 唯一的接入手段,PC機(jī)在傳統(tǒng)的網(wǎng)絡(luò)即時(shí)通訊中所起的作用正在被手機(jī)、平板電腦 所取代。這使得即時(shí)通訊更加大眾化和人性化,即使不會(huì)使用電腦的人現(xiàn)在也可以享受到即時(shí)通訊給人們帶來的變化。撤展雛紈顆鋅討躍滿雕縱觀即時(shí)通訊軟件業(yè)的迅速發(fā)展, 設(shè)計(jì)并開發(fā)一個(gè)即時(shí)通訊平臺(tái),對(duì)于現(xiàn)階段的 學(xué)習(xí)和研究,都是極為有意義的,基于這個(gè)前提和起因,我選擇了設(shè)計(jì)即時(shí)通訊
16、系統(tǒng) 作為我的畢業(yè)設(shè)計(jì)。夾琬閭輪鼠檔驀遷鏤源1.2 國(guó)內(nèi)外即時(shí)通訊的研究現(xiàn)狀從商業(yè)研究的方面看,即時(shí)通訊軟件從最初的免費(fèi)政策,到逐漸挖掘和整合創(chuàng)新 多種盈利模式,即時(shí)通訊市場(chǎng)收入逐步擴(kuò)大,而為企業(yè)用戶提供商務(wù)即時(shí)通訊的一整 套解決辦法將成為未來即時(shí)通訊企業(yè)角逐的熱點(diǎn)和盈利的新空間1。視黜饅碘椅腦鈞!即即時(shí)通訊運(yùn)營(yíng)商的盈利模式包括互聯(lián)網(wǎng)增值服務(wù)、無線網(wǎng)增值服務(wù)、廣告服務(wù)和 企業(yè)即時(shí)通訊服務(wù)。以前,即時(shí)通訊運(yùn)營(yíng)商的盈利方式還僅局限于互聯(lián)網(wǎng)即時(shí)通訊增 值業(yè)務(wù),但是隨著市場(chǎng)的發(fā)展和功能的開發(fā),無線網(wǎng)絡(luò)增值業(yè)務(wù)和廣告業(yè)務(wù)更多的參 與到運(yùn)營(yíng)商整體收入中來2。囿微釗爵端球讖黛從學(xué)術(shù)化的即時(shí)通訊研究方面看,國(guó)
17、內(nèi)外公開發(fā)表的論文非常少 3。僅有的幾篇 集中在即時(shí)通訊基本服務(wù)元素的定義方面4與即時(shí)通訊軟件技術(shù)實(shí)現(xiàn)、編程技巧等方 面5。還有部分關(guān)于安全性的討論6。篇彳翎喻麻喬級(jí)的喬斷總的說來,國(guó)內(nèi)外關(guān)于即時(shí)通訊的研究還不夠系統(tǒng)和深入。1第二章需求分析和可行性分析1.3 本課題的意義與主要工作內(nèi)容聊天軟件作為使用最為廣泛的即時(shí)性通訊工具,它在擁有文字聊天基礎(chǔ)功能的同時(shí),為滿足用戶的需求,還增加了文件傳輸?shù)墓δ?,成為現(xiàn)在最為主流的網(wǎng)上應(yīng)用軟 件。本論文主要對(duì)聊天軟件的文字聊天、文件傳輸功能進(jìn)行分析與研究,總結(jié)出實(shí)現(xiàn) 的相關(guān)理論與知識(shí)。雕懣軻金名僥張磔陣軫藹。本課題主要研究?jī)?nèi)容包括以下幾個(gè)方面:(1)查找相關(guān)
18、書籍與文獻(xiàn),了解C/S構(gòu)架并搭建.NET開發(fā)平臺(tái)(2)查找相關(guān)資料,學(xué)習(xí)C#開發(fā)語言以及SQL Server數(shù)據(jù)庫(kù)的使用,(3)查找現(xiàn)階段基于局域網(wǎng)的即時(shí)通訊軟件的發(fā)展現(xiàn)狀以及相關(guān)功能(4) Socket編程技術(shù)在上述基礎(chǔ)上,做出即時(shí)通訊軟件的相關(guān)功能如下:(1)用戶注冊(cè)功能(2)用戶登錄功能(3)添加好友功能(4)添加分組功能(5)刪除好友功能(6)刪除分組功能(7)移動(dòng)好友到指定分組功能(8)即時(shí)聊天功能(9)文件傳輸功能1.4論文的組織結(jié)構(gòu)第一章:緒論。第二章:需求分析和可行性分析,分析了系統(tǒng)的需求和系統(tǒng)實(shí)施的可行性。第三章:數(shù)據(jù)庫(kù)設(shè)計(jì),介紹了本系統(tǒng)所使用的數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)的設(shè)計(jì)、數(shù)據(jù)庫(kù)E
19、-R圖以及數(shù)據(jù)庫(kù)關(guān)系圖。第四章:詳細(xì)設(shè)計(jì),本章主要進(jìn)行了系統(tǒng)的模塊設(shè)計(jì),包括多線程設(shè)計(jì)、服務(wù)器 設(shè)計(jì)、數(shù)據(jù)庫(kù)連接以及闡述系統(tǒng)各功能模塊。厲騏鎏農(nóng)殺情獄景則曬。第五章:重難點(diǎn)分析及解決方案,本章著重分析了本系統(tǒng)的重難點(diǎn)及其解決方案。第六章:系統(tǒng)測(cè)試與發(fā)布,本章主要介紹了系統(tǒng)測(cè)試的環(huán)節(jié)、展示了測(cè)試的結(jié)果 以及系統(tǒng)的發(fā)布。第七章:系統(tǒng)的不足與展望,主要陳述了本系統(tǒng)存在哪些不足的地方以及對(duì)系統(tǒng) 的展望。第二章需求分析和可行性分析2.1 需求分析此次開發(fā)的網(wǎng)絡(luò)聊天工具可作為企業(yè)局域網(wǎng)的交流工具使用,通信的安全性不是很高,但要求信息的響應(yīng)速度要較快,讓用戶充分享受到網(wǎng)絡(luò)即時(shí)消息的方便和快捷。 本聊天工具由
20、服務(wù)器端程序和客戶端程序兩部分組成,整體采用.NET平臺(tái)開發(fā),采用UDP通信協(xié)議,使用Socket技術(shù)。服務(wù)器是可以進(jìn)行監(jiān)聽,記錄客戶端請(qǐng)求和驗(yàn) 證客戶端身份的合法性,客戶端程序面向?qū)嶋H用戶,它有必要的界面的按鈕,向用戶 提供網(wǎng)絡(luò)即時(shí)消息的功能。鍍鋅過潤(rùn)啟麗駱蠲激 2.1.1系統(tǒng)包含的功能本聊天系統(tǒng)需包含如下基本功能:(1)客戶端的主要功能:用戶注冊(cè) 用戶登錄 添加好友 獲取好友列表 與好友聊天 發(fā)送表情功能 文件傳輸(2)服務(wù)器端的主要功能: 啟動(dòng)服務(wù) 建立連接 監(jiān)聽客戶請(qǐng)求2.1.2功能模塊聊天工具由服務(wù)器端和客戶端組成, 要分析清楚兩方面所要完成的任務(wù), 對(duì)設(shè)計(jì) 來說,等于完成了一半。根
21、據(jù)聊天的通信步驟,系統(tǒng)的功能模塊如圖 2-1所示。橙貳軻 譽(yù)箜該檻加增賽。(1)服務(wù)器端服務(wù)器端完成3大功能:建立連接、斷開連接、監(jiān)聽客戶請(qǐng)求。這 3大功能的具 體含義如下:建立連接:系統(tǒng)啟動(dòng)時(shí)建立連接,綁定本地計(jì)算機(jī)的一個(gè)端口,不斷地監(jiān) 聽是否有客戶端請(qǐng)求連接或者斷開連接。斷開連接:停止監(jiān)聽,系統(tǒng)斷開連接。監(jiān)聽客戶請(qǐng)求:服務(wù)器端是個(gè)信息樞紐,所有向服務(wù)器端請(qǐng)求的客戶端的 信息都要傳到服務(wù)器端,再由服務(wù)器根據(jù)客戶端的請(qǐng)求按要求分發(fā)出去, 客戶端再向服務(wù)器端發(fā)送各種請(qǐng)求,如:登錄,發(fā)送消息,獲取好友列表 等。通駕賺隆賓唄擷鵡訟湊。圖2-1系統(tǒng)功能模塊圖(2)客戶端客戶端完成以下幾大功能:用戶注冊(cè)
22、、用戶登錄、添加好友、聊天功能、發(fā)送表 情、文件傳輸功能。用戶注冊(cè):客戶端與服務(wù)器建立通信通道,服務(wù)就收客戶端的注冊(cè)請(qǐng)求。通過系統(tǒng)的注冊(cè)界面,輸入賬號(hào)和密碼,完成注冊(cè)。該棟諼礴豁中羸I轆錠。用戶登錄:客戶端與服務(wù)器建立通信通道,隨時(shí)接收來自服務(wù)器的監(jiān)聽。通過系統(tǒng)的登錄界面,輸入賬號(hào)和密碼,然后發(fā)送到服務(wù)器進(jìn)行驗(yàn)證。如果驗(yàn)證通過,服務(wù)器則返回用戶的好友信息。郵女渾1W蘋埔品侖廟。添加好友:用戶在登錄系統(tǒng)之后可以添加好友。聊天功能:客戶在與好友建立通信連接后,便可以與好友進(jìn)行聊天,聊天 時(shí)發(fā)送的是文本信息。發(fā)送表情功能:與好友聊天時(shí),可在文本信息中插入表情。文件傳輸:用戶之間可以相互傳送文件以實(shí)現(xiàn)
23、文件共享2.2 系統(tǒng)可行性分析可行性分析(Feasibility Analysis)也稱為可行性研究,是在系統(tǒng)調(diào)查的基礎(chǔ)上, 針對(duì)新系統(tǒng)的發(fā)開是否具備必要性和可能性,對(duì)新系統(tǒng)的開發(fā)從各方面進(jìn)行分析和研 究,以避免投資失誤,保證新系統(tǒng)的開發(fā)成功??尚行匝芯康哪康木褪怯米钚〉拇鷥r(jià) 在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。膏熊訛嬲梗業(yè)燮塾羅斯。2.2.1 經(jīng)濟(jì)可行性分析基于局域網(wǎng)、C/S架構(gòu)的即時(shí)通訊系統(tǒng)在很多資料上都能找到,包括書本和網(wǎng)絡(luò) 上都有很多類似的系統(tǒng),開發(fā)這樣一個(gè)系統(tǒng)所需要的花費(fèi)不是很大,需要的開發(fā)工具、 需要的軟件等都可以在網(wǎng)上找到試用版,不需要購(gòu)買,所以不需要花費(fèi)太多金錢,在經(jīng)濟(jì)上完
24、全能夠完成本系統(tǒng)的設(shè)計(jì)。鰻崎婁悅溫鴨騫。2.2.2 人力可行性分析完成本系統(tǒng)不需要太多的人力資源,有老師和同學(xué)的幫助,也可以在網(wǎng)上找到與本系統(tǒng)相關(guān)的很多資源,在人力資源上能夠完成本系統(tǒng)的設(shè)計(jì)。描L虛絡(luò)涉鰻物薪予源。2.2.3 技術(shù)可行性分析基于.NET的即時(shí)通訊軟件,實(shí)現(xiàn)一般通訊軟件的基本功能(登錄,聊天,退出), 沒有十分復(fù)雜的其他功能,如:登錄、添加好友、與好友聊天、傳輸文件等基本的功 能,這些都能夠運(yùn)用所學(xué)的知識(shí)實(shí)現(xiàn)。隸言匡熒鑒雅綱榭鬻臺(tái)饕本系統(tǒng)使用的編程語言是 C#語言,所使用的平臺(tái)是.NET平臺(tái),對(duì)于VS2010的 使用還是比較熟悉。在校已學(xué)習(xí)過 C#編程。瀏期濯著捌票橫碗奏。完成這
25、個(gè)通訊軟件的基礎(chǔ)知識(shí)大都已經(jīng)具備, 同時(shí),在網(wǎng)上也可以找到許多資料, 如CSDN、看雪論壇等能夠查到許多開源源代碼,自己能夠充分運(yùn)用這些網(wǎng)絡(luò)資源, 完成這個(gè)畢業(yè)設(shè)計(jì)。金巴煩罰檀筆磐颼鎘糊。2.3 開發(fā)環(huán)境和相關(guān)技術(shù)介紹2.3.1 開發(fā)環(huán)境本設(shè)計(jì)是一個(gè)局域網(wǎng)即時(shí)通訊軟件,要在短時(shí)間內(nèi)開發(fā)出來并且滿足客戶要求,無論是硬件還是軟件都要選擇合適, 要求如下:開發(fā)設(shè)備完善;開發(fā)機(jī)器的性能必須 穩(wěn)定;操作系統(tǒng)的選擇應(yīng)該適當(dāng);開發(fā)出的程序可以在盡可能多的平臺(tái)上運(yùn)行;要求 運(yùn)行機(jī)配置盡可能低檔。對(duì)此,我選擇的硬件環(huán)境和軟件環(huán)境如下:愜軌緝蕤紳頑陽豫tn。硬件環(huán)境(1)處理器:Intel Pentium PII
26、I或者更高的處理器(2)內(nèi)存:256MB或更高(3)網(wǎng)絡(luò):局域網(wǎng)軟件環(huán)境(1)操作系統(tǒng): Windows XP/Windows 7(2)開發(fā)平臺(tái):Microsoft Visual Studio 2010(3)開發(fā)語言:C#(4)數(shù)據(jù)庫(kù):SQL Server 20052.3.2 Microsoft Visual Studio 2010 介紹Visual Studio是微軟公司推出的開發(fā)環(huán)境。Visual Studio 2010同時(shí)帶來.NETFramework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-C
27、TP),并且支持開發(fā)面向 Windows的應(yīng)用程序。貞廈給鰭1牽制麟留葡 2.3.3 .NET 平臺(tái).NET就是微軟的用來實(shí)現(xiàn) XML , Web Services, SOA (面向服務(wù)的體系結(jié)構(gòu) service-oriented architecture和敏捷性的技術(shù)。.NET是微軟的新一代技術(shù)平臺(tái),為敏 捷商務(wù)構(gòu)建互聯(lián)互通的應(yīng)用系統(tǒng),這些系統(tǒng)是基于標(biāo)準(zhǔn)的,聯(lián)通的,適應(yīng)變化的,穩(wěn) 定的和高Tt能的。.NET是基于Windows操作系統(tǒng)運(yùn)行的操作平臺(tái),應(yīng)用于互聯(lián)網(wǎng)的 分布式0嗜鰭級(jí)廚脹錮碉毀新。2.3.4 C#語言簡(jiǎn)介C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework之上的
28、高級(jí)程序 設(shè)計(jì)語言。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#起來與Java有 著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運(yùn)行的過程。它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。薊鎮(zhèn)豎牘紿蝌W鈴 騫。2.3.5 Socket 技術(shù)所謂Socket通常也稱作 篡接字”,應(yīng)用程序通常通過 套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或 者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。根據(jù)連接啟動(dòng)的方式以及本地套接字要連接的目標(biāo), 套接字之間的 連接過程可以分為三個(gè)步驟:服務(wù)器監(jiān)聽,客戶端請(qǐng)求,連接確認(rèn)。 齡踐硯語蝸鑄轉(zhuǎn)黜®'裸。服務(wù)器監(jiān)聽:是服務(wù)器端套接字并
29、不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)??蛻舳苏?qǐng)求:是指由客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求。紳藪瘡解牙標(biāo)於夏連接確認(rèn):是指當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請(qǐng) 求,它就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于 監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求。飪夢(mèng)獰廚若住卜誣苧徑凜。2.3.6 TCP/
30、IP 協(xié)議TCP/IP是國(guó)際互聯(lián)網(wǎng)所采用進(jìn)行網(wǎng)際互連的通信協(xié)議7 ,實(shí)際所稱的TCP/IP協(xié) 議包括了在國(guó)際互聯(lián)網(wǎng)絡(luò)應(yīng)用的一組協(xié)議,互聯(lián)網(wǎng)協(xié)議族是此協(xié)議族的另一個(gè)名字 80煌斃潛賁粵。TCP協(xié)議在因特網(wǎng)協(xié)議族(Internet protocol suite)四層協(xié)'議中,TCP層是位于IP層之上,應(yīng) 用層之下的傳輸層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但 是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。鑄豈濤孰躍輪前嫄鍵。TCP服務(wù)提供了可靠性、有效流控制、數(shù)據(jù)流傳輸、多路復(fù)用技術(shù)和全雙工操 作等。(2) UDP協(xié)議UDP是User Datagram Proto
31、col的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是 OSI參 考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),IETF RFC 768是UDP的正式規(guī)范。擷偽氫黜祇需鞫e龐。在選擇使用協(xié)議的時(shí)候,選擇 UDP必須要謹(jǐn)慎。在網(wǎng)絡(luò)質(zhì)量令人不十分滿意的 環(huán)境下,UDP協(xié)議數(shù)據(jù)包丟失會(huì)比較嚴(yán)重。但是由于 UDP的特性:它不屬于連接型 協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點(diǎn),所以通常音頻、視頻和普通數(shù)據(jù)在 傳送時(shí)使用UDP較多,因?yàn)樗鼈兗词古紶杹G失一兩個(gè)數(shù)據(jù)包,也不會(huì)對(duì)接收結(jié)果產(chǎn) 生太大影響。比如我們聊天用的ICQ和QQ就是使用的UDP協(xié)議。蹤1摻釣K綾St發(fā)新。 2.3.7 Clie
32、nt/Server結(jié)構(gòu)(客戶端/服務(wù)器模式)Client/Server或客戶/服務(wù)器模式:Client和Server常常分別處在相距很遠(yuǎn)的兩臺(tái) 計(jì)算機(jī)上,Client程序的任務(wù)是將用戶的要求提交給 Server程序,再將Server程序返 回的結(jié)果以特定的形式顯示給用戶;Server程序的任務(wù)是接收客戶程序提出的服務(wù)請(qǐng) 求,進(jìn)行相應(yīng)的處理,再將結(jié)果返回給客戶程序。i機(jī)職金映蝕騫。2.4本章小結(jié)本章主要對(duì)本系統(tǒng)的相關(guān)技術(shù)進(jìn)行介紹,對(duì)基于C/S即時(shí)通訊的原理有一定的了 解,對(duì)數(shù)據(jù)信息在網(wǎng)絡(luò)中傳輸?shù)脑矶加羞M(jìn)一步的認(rèn)識(shí), 從需求分析和可行性分析出 發(fā)講述系統(tǒng)的系統(tǒng)設(shè)計(jì)架構(gòu)、需求分析、技術(shù)可行性分析以
33、及對(duì)系統(tǒng)的開發(fā)環(huán)境和相 關(guān)技術(shù)進(jìn)行了詳細(xì)的介紹。為設(shè)計(jì)本系統(tǒng)構(gòu)建了一定的理論體系。鬻1摻銀錠試監(jiān)酬解I。第三章數(shù)據(jù)庫(kù)設(shè)計(jì)3.1 SQL Server數(shù)據(jù)庫(kù)介紹SQL Server是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的,于 1988年推出了第一個(gè) OS/2版本。在 Windows NT推出后,Microsoft與Sybase在SQL Server的開發(fā)上就分道揚(yáng)鑲了, Microsoft 將SQL Server移植到 Windows NT系統(tǒng)上,專注于開發(fā)推廣 SQL Server的Windows NT版本。Sybase則較
34、專注于SQL Server在UN IX操作系統(tǒng)上的應(yīng)用。傳修執(zhí)解I號(hào)燎 月詹喻SQL是英文Structured Query Language勺縮寫,意思為結(jié)構(gòu)化查詢語言。 SQL語 言的主要功能就是同各種數(shù)據(jù)庫(kù)建立聯(lián)系,進(jìn)行溝通。按照ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì))的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)等。目前,絕大多 數(shù)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),如 Oracle, Sybase, Microsoft SQL Server, Access 者B采用了 SQL語言標(biāo)準(zhǔn)??b霞悵渙靚蟠淺舸明髓。3.2 理論基
35、礎(chǔ)設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)時(shí),遵循不同的規(guī)范要求,設(shè)計(jì)出合理的關(guān)系型數(shù)據(jù)庫(kù),這些不 同的規(guī)范要求被稱為不同的范式, 各種范式呈遞次規(guī)范,越高的范式數(shù)據(jù)庫(kù)冗余越小 9。驥擅幟禳摩兗梗是絳粵。(1)第一范式(1NF)就是無重復(fù)的域。在任何一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,第一范式是對(duì)關(guān) 系模式的設(shè)計(jì)基本要求,一般設(shè)計(jì)中都必須滿足第一范式。 不過有些關(guān)系模型中突破 了 1NF的限制,這種稱為非1NF的關(guān)系模型。換句話說,是否必須滿足 1NF的最低 要求,主要依賴于所使用的關(guān)系模型。癱喧導(dǎo)騁艷搗感搬I。(2)第二范式(2NF)要求實(shí)體的屬性完全依賴于主關(guān)鍵字。(3)第三范式(3NF)要求一個(gè)關(guān)系中不包含已在其它關(guān)系已包含的非主
36、鍵子信息。數(shù)據(jù)庫(kù)設(shè)計(jì)是進(jìn)行系統(tǒng)開發(fā)的基礎(chǔ)性工作, 設(shè)計(jì)方案的好壞是影響開發(fā)的重要因 素。數(shù)據(jù)庫(kù)設(shè)計(jì)要遵循以下原則10: 鴿奪圓鰥腌翻蹦。(1)數(shù)據(jù)的完整性:保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)準(zhǔn)確。(2)數(shù)據(jù)的結(jié)構(gòu)化:數(shù)據(jù)庫(kù)設(shè)計(jì)必須層次分明,分布合理。數(shù)據(jù)庫(kù)必須高度結(jié)構(gòu) 化,保證數(shù)據(jù)的結(jié)構(gòu)化、規(guī)范化和標(biāo)準(zhǔn)化。欖閾團(tuán)皺鵬版蘊(yùn)。(3)減少數(shù)據(jù)冗余:數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)該盡量減少數(shù)據(jù)冗余,節(jié)省存儲(chǔ)空間,提高數(shù) 據(jù)質(zhì)量。消除數(shù)據(jù)庫(kù)表中非主屬性對(duì)主關(guān)鍵詞的非完全依賴性和非主屬性對(duì)主關(guān)鍵詞7第四章詳細(xì)設(shè)計(jì)的傳遞依賴性,將二維表轉(zhuǎn)化為第三范式,是降低數(shù)據(jù)冗余的有效方式。遜輸吳貝義鯽a力停猶疑。3.3 數(shù)據(jù)庫(kù)E-R圖用戶和好友關(guān)系之間
37、是多對(duì)多的關(guān)系, 一個(gè)用戶可以對(duì)應(yīng)多個(gè)好友關(guān)系、 一種好 友關(guān)系只能對(duì)應(yīng)一個(gè)用戶。數(shù)據(jù)庫(kù) E-R圖如圖3-1所示。 帽覘匱駭ft紅鹵齡鐮潟。圖3-1數(shù)據(jù)庫(kù)E-R圖153.4 數(shù)據(jù)庫(kù)設(shè)計(jì)3.4.1 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)即時(shí)通訊系統(tǒng)總共使用到了兩張數(shù)據(jù)表,用戶信息表與用戶關(guān)系表。用戶信息表用來記錄所有已注冊(cè)的用戶的登錄賬戶、密碼、姓名等信息,userid即用戶賬號(hào)為主鍵,word用于保存密碼,name保存用戶名字,用戶信息表的詳細(xì)結(jié) 構(gòu)如表3-1所示。言甬終決慎區(qū)面s側(cè)泉端表3-1用戶表列名數(shù)據(jù)類型是否主鍵可否為空useridvarchar(50)是否wordvarchar(50)否否namevarch
38、ar(50)否否好友關(guān)系表用來記錄用戶的好友關(guān)系,其中userid為主鍵,friendid用來記錄好友的ID, friendid不可以為空,好友關(guān)系表的詳細(xì)結(jié)構(gòu)如表3-2所示。醫(yī)滌保削 1ml辦的臬表3-2好友關(guān)系表列名數(shù)據(jù)類型是否主鍵可否為空useridvarchar(50)是否friendidvarchar(50)否否3.4.2 數(shù)據(jù)庫(kù)物理設(shè)計(jì)(1)表名:用戶信息表此表用來記錄所有已注冊(cè)的用戶的登錄賬戶、密碼、性別等信息,userid即用戶賬號(hào)為主鍵。(2)表名:用戶關(guān)系表此表用來記錄用戶的好友關(guān)系信息,userid為主鍵。3.5 數(shù)據(jù)庫(kù)關(guān)系圖用戶信息表的主鍵tmid作為好友關(guān)系表rtmi
39、d和rfriend的外鍵,輸入好友的賬 號(hào),添加成功后,好友的賬號(hào)將會(huì)顯示在好友列表中。臚當(dāng)為送頭鹿鰭啰暈毒3.6 本章小結(jié)本章主要介紹了 SQL Server數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)的設(shè)計(jì)。數(shù)據(jù)庫(kù)設(shè)計(jì)又包括數(shù)據(jù)表 設(shè)計(jì)和存儲(chǔ)過程的設(shè)計(jì)。數(shù)據(jù)庫(kù)表主要存儲(chǔ)用戶信息和好友關(guān)系信息,即時(shí)通訊系統(tǒng) 連接數(shù)據(jù)庫(kù)后便可以讀取數(shù)據(jù)庫(kù)中的信息。鴿湊田輔幅燭屬獎(jiǎng)選鋸。第四章詳細(xì)設(shè)計(jì)4.1 多線程設(shè)計(jì)服務(wù)器需要和多個(gè)客戶端同時(shí)進(jìn)行通信,這就是服務(wù)器端的多線程。一旦服務(wù)器 發(fā)現(xiàn)一個(gè)新的客戶端與之建立了連接,就馬上新建一個(gè)線程與客戶端進(jìn)行通信。用多線程的好處在于可以同時(shí)處理多個(gè)通信連接,不會(huì)出于由于數(shù)據(jù)排隊(duì)而發(fā)生的延遲或者丟失
40、,可以很好利用系統(tǒng)的性能11。期翱!植懷毓頤噪悅廢。點(diǎn)擊服務(wù)器端窗體的“開始服務(wù)”按鈕,調(diào)用 Listen開始監(jiān)聽,監(jiān)聽處理過程位 于單獨(dú)的線程中,Listen的實(shí)現(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();點(diǎn)擊服務(wù)器端窗體的“停止服務(wù)”按鈕,調(diào)用CloseSock停止監(jiān)聽,CloseSock的實(shí)現(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();當(dāng)服務(wù)器端接收到客戶端的請(qǐng)求后,調(diào)用GetUDPData函數(shù)來分析并獲取客戶端的請(qǐng)求,并進(jìn)行處理,GetUDPData的實(shí)現(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 服務(wù)器的設(shè)計(jì)服務(wù)器實(shí)現(xiàn)了服務(wù)器的多線程,服務(wù)器端有一個(gè)進(jìn)程(或多個(gè)進(jìn)程)在指定的端 口等待客戶的連接信息。一時(shí)連接成功
43、,就可以按設(shè)計(jì)的數(shù)據(jù)交換方法和格式進(jìn)行數(shù) 據(jù)傳輸。客戶端只在需要的時(shí)候向服務(wù)端發(fā)出連接請(qǐng)求。戢曹加澆那適濘噂蜃服務(wù)器端主窗口如圖4-1所示。圖4-1服務(wù)器主窗口本窗體主要使用到了一個(gè)listview控件,分別用于顯示已連接用戶的ID、IP地址、 名字NAME、端口號(hào)Port, 2個(gè)Button控件。寺燥戶踐瀾點(diǎn)擊 開始服務(wù)”按鈕觸發(fā)Listen _Click事件,執(zhí)行此操作后,結(jié)束服務(wù)”按鈕的“Enabled(性變?yōu)椤皌rue, ”開始服務(wù)”按鈕的“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)表示調(diào)用 sockUDP 的 tListen 開始監(jiān)聽。點(diǎn)擊“Stop®鈕觸發(fā)Stop _Click事件,執(zhí)行此操作后,“Sto限鈕的“Enabled” 屬性變?yōu)椤癴alse,班重新開始啟用這些控件,其代碼如下:典頂鱷筍類言曼蛛紀(jì)思愿private void Stop_Click(object sender, Even
45、tArgs e)吉釋蹌劍福綻 蘊(yùn) sockUDP1.CloseSock();button1.Enabled =true;button2.Enabled =false;其中sockUDP1.CloseSock(/示調(diào)用sockUDP的CloseSock停止監(jiān)聽。登錄客戶 端之前要先打開服務(wù)器端的“Listener®體,點(diǎn)擊 開始服務(wù)”按鈕。南出金商縹評(píng)緡肅群賞4.3 數(shù)據(jù)庫(kù)連接本系統(tǒng)采用的數(shù)據(jù)庫(kù)是 SQL Server 2005,首先要安裝SQL Server 2005主要操作:安裝SQL Server 2005組件、安裝服務(wù)器、填寫本地計(jì)算機(jī)、新的SQL Server實(shí)例或安裝客服端
46、工具、安裝服務(wù)器和客戶端、填寫公司與名稱、接受協(xié)議、 設(shè)置用戶賬戶、進(jìn)行身份驗(yàn)證等。爺纜金巨判翻喘煤箋除安裝后,建立一個(gè)名為Myqq的數(shù)據(jù)庫(kù),保存注冊(cè)的用戶信息和用戶之間的關(guān)系。在Visual Studio 2010的應(yīng)用程序中添加一個(gè)名為SqlHelp的類來連接數(shù)據(jù)庫(kù)。連 接字符串為 private static string conn = new SqlConnection("Data Source=.;Initial Catalog=MYqq;Integrated Secuhty=True");其中使用 getconn函數(shù)打開連接,具體代碼 如下:鍥熾崎曾薩蜷竇補(bǔ)飆黑
47、public void getconn() conn = new SqlConnection("Data Source=.;Initial Catalog=MYqq;Integrated Security=True");噱倉(cāng)戈本道t 稠屈® 諂璋鳳try conn.Open();catch (Exception ee) MessageBox.Show('數(shù)據(jù)庫(kù)連接錯(cuò)誤!"); closeconn函數(shù)關(guān)閉連接,具體代碼如下:public void closeconn() conn.Close();getselect函數(shù)為查詢數(shù)據(jù)庫(kù),返回查詢結(jié)果,其
48、中g(shù)etselect具體代碼如下: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ù)庫(kù),其中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; 客戶端進(jìn)行注冊(cè)、登錄、添加好友等操作都會(huì)用到數(shù)據(jù)庫(kù),由服務(wù)器端連接數(shù) 據(jù)庫(kù)獲取數(shù)據(jù)再返回給客戶端。4.4 主要功能模塊介紹4.4.1 用戶注冊(cè)服務(wù)器端:調(diào)用up_PRegist向數(shù)據(jù)庫(kù)表中添加新用戶,返回用戶狀態(tài)及 id。服 務(wù)器在收到客戶端的數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行解析并為用戶注冊(cè),并將返回的結(jié)果使用原 socket通道發(fā)送給客戶端。關(guān)鍵代碼如下: 醇庫(kù)蹤僉設(shè)腳瀕諂string returnmes =&qu
50、ot;"string regmes = new ClassSerializers().DeSerializeBinary(new System.IO.MemoryStream(msg.MsgContent) as string;解賊洋責(zé)深鋸string allm=regmes.Split('/');SQLhelp help = new SQLhelp();help.getconn();try 第四章詳細(xì)設(shè)計(jì)int i= help.change("insert into userinfo(word,name) values," + allm0 + &
51、quot;','" + allm2 + "')");訊通融國(guó)賀粽樞輒鎖翼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妥嬋鏘戶潑。注冊(cè)頁面如圖4-2所示。用戶注冊(cè)包括填寫用戶賬號(hào),密碼,名字等,如果用戶填寫
53、的信息有誤,如:兩 次輸入的密碼不相同,系統(tǒng)將提示注冊(cè)有誤,則需要重新填寫信息。瞇瞅艮癩嘮閣蹺蜃本窗體主要使用了 4個(gè)Label控件,分別用于顯示密碼、確認(rèn)密碼以及名字; 2 個(gè)Button控件用于確認(rèn)注冊(cè)與取消,3個(gè)TextBox控件用于注冊(cè)時(shí)用戶填寫密碼、 確 認(rèn)密碼以及名字等信息。閔n韻雕s雋剜頌im。點(diǎn)擊 提交”按鈕觸發(fā)btnSubmit_Click事件,客戶端驗(yàn)證注冊(cè)信息正確以后便向服務(wù)器發(fā)送注冊(cè)請(qǐng)求,服務(wù)器驗(yàn)證信息后便在用戶表中插入新用戶數(shù)據(jù),便自動(dòng)生成ID號(hào),最后將ID返回到客戶端,用戶便可根據(jù)此ID進(jìn)行登錄聊天系統(tǒng),其中 btnSubmit_Click事件具體代碼如下:楝獴
54、165;開閾燈傘饃言皆糧。圖4-2用戶注冊(cè)界面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();調(diào)碎鸚震鉞
56、饅提劌藪 sendMsgToServer(msg);label7.Text ="請(qǐng)稍等" 通過判斷密碼是否為空、兩次密碼是否一致已經(jīng)密碼是否少于五位來驗(yàn)證用戶輸 入信息的準(zhǔn)確性,當(dāng)通過驗(yàn)證后,則調(diào)用sendMsgToServer函數(shù)向服務(wù)器發(fā)送注冊(cè)請(qǐng)求。最后清空各個(gè)輸入框中字符。根據(jù)服務(wù)器返回的結(jié)果彈出對(duì)應(yīng)的MessageBox對(duì)話框,回復(fù)至ij登陸窗口。屬聳如f鰭晉兗堇腰。sendMsgToServer函數(shù)的實(shí)現(xiàn)方法如下:public void sendMsgToServer(ClassMsg msg) this.sockUDP2.Send(this.ServerIP,
57、this.ServerPort, new ClassSerializers().SerializeBinary(msg).ToArray();苧諼蕤雇黃暹閂譽(yù)東犀 4.4.2用戶登錄服務(wù)器獲得客戶端發(fā)送來的用戶名和密碼,然后查詢數(shù)據(jù)庫(kù)的相應(yīng)的用戶列 表,如果該用戶不存在或用戶名與密碼不匹配服務(wù)器將驗(yàn)證失敗的結(jié)果還回給客戶 端,驗(yàn)證過程終止。如果驗(yàn)證通過,則成功登錄系統(tǒng),登錄認(rèn)證的流程如圖4-3所示。編攝襦倭憚嚕緡贊。Server簞嗇癲瀏凈趕鉤婿鱷鳧。圖4-3用戶登錄認(rèn)證流程圖服務(wù)器端:登陸時(shí),則調(diào)用服務(wù)器端在收到來自客戶端的數(shù)據(jù)后解析數(shù)據(jù)包,當(dāng)識(shí)別數(shù)據(jù)模式為NewUserLogin函數(shù)處理登錄邏輯。在這個(gè)函數(shù)里
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專屬房地產(chǎn)項(xiàng)目代建合作合同(2024版)版B版
- 二零二五版二手房買賣合同代辦及交易稅費(fèi)減免服務(wù)合同3篇
- 2025年度車輛租賃與車輛抵押貸款服務(wù)合同2篇
- 2025年度虛擬現(xiàn)實(shí)技術(shù)應(yīng)用出資合同4篇
- 2025版信托投資公司外匯貸款合同解除協(xié)議2篇
- 二零二五版模具制造與自動(dòng)化生產(chǎn)線集成合同4篇
- 二零二五年度智慧城市建設(shè)運(yùn)營(yíng)承包經(jīng)營(yíng)合同范本3篇
- 2025年度代牧合作合同范本4篇
- 二零二五年度觸控一體機(jī)展覽展示設(shè)計(jì)制作合同4篇
- 個(gè)人之間借款合同標(biāo)準(zhǔn)模板
- 保險(xiǎn)反洗錢培訓(xùn)
- 普通高中生物新課程標(biāo)準(zhǔn)
- 茉莉花-附指法鋼琴譜五線譜
- 結(jié)婚函調(diào)報(bào)告表
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計(jì)規(guī)范-PDF解密
- 冷庫(kù)制冷負(fù)荷計(jì)算表
- 肩袖損傷護(hù)理查房
- 設(shè)備運(yùn)維管理安全規(guī)范標(biāo)準(zhǔn)
- 辦文辦會(huì)辦事實(shí)務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
評(píng)論
0/150
提交評(píng)論