基于TCP的網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)論文.doc_第1頁(yè)
基于TCP的網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)論文.doc_第2頁(yè)
基于TCP的網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)論文.doc_第3頁(yè)
基于TCP的網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)論文.doc_第4頁(yè)
基于TCP的網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)論文.doc_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

畢業(yè)設(shè)計(jì)(論文)題 目: 基于tcp的網(wǎng)絡(luò) 通信協(xié)議設(shè)計(jì) 學(xué) 院: 計(jì)算機(jī)科學(xué)學(xué)院 專業(yè)班級(jí): 網(wǎng)絡(luò)工程10級(jí)1班 指導(dǎo)教師: 薛文生 職稱: 副教授 學(xué)生姓名: 劉小芳 學(xué) 號(hào): 41009040127 畢業(yè)設(shè)計(jì)(論文)題 目: 基于tcp的網(wǎng)絡(luò) 通信協(xié)議設(shè)計(jì) 學(xué) 院: 計(jì)算機(jī)科學(xué)學(xué)院 專業(yè)班級(jí): 網(wǎng)絡(luò)工程10級(jí)1班 指導(dǎo)教師: 薛文生 職稱: 副教授 學(xué)生姓名: 劉小芳 學(xué) 號(hào): 41009040127 摘 要 在網(wǎng)絡(luò)越來(lái)越發(fā)達(dá)的今天,人們對(duì)網(wǎng)絡(luò)的依賴越來(lái)越多,越來(lái)越離不開網(wǎng)絡(luò),由此而產(chǎn)生的即時(shí)通訊工具也越來(lái)越多,而網(wǎng)絡(luò)中不同的工作站、服務(wù)器之間能通訊,源于協(xié)議的存在。協(xié)議的設(shè)計(jì)可以實(shí)現(xiàn)交流的高效與安全。本文主要對(duì)即時(shí)通訊軟件的協(xié)議的設(shè)計(jì),從而為用戶提供一個(gè)可靠的、專業(yè)的網(wǎng)上交流平臺(tái)。 本次畢業(yè)設(shè)計(jì)是采用客戶端/服務(wù)器架構(gòu)模式,模擬現(xiàn)有網(wǎng)絡(luò)通信協(xié)議,運(yùn)用了計(jì)算機(jī)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)如:tcp,多線程以及windows socket等,設(shè)計(jì)的一款簡(jiǎn)單的應(yīng)用層網(wǎng)絡(luò)通信協(xié)議。本系統(tǒng)是在tcp之上,采用visual c+ 6.0開發(fā)平臺(tái),基于mfc框架提供的windows socket編程機(jī)制設(shè)計(jì),運(yùn)用dialog based組件構(gòu)建界面,使用了 c+面向?qū)ο蟮募夹g(shù)和面向?qū)ο蟮脑O(shè)計(jì)原則,使用vc+語(yǔ)言編寫??蛻舳伺c服務(wù)器端通過socket傳送消息。服務(wù)器端設(shè)計(jì)與實(shí)現(xiàn)過程中,采用了多線程技術(shù),可以在單個(gè)程序當(dāng)中同時(shí)運(yùn)行多個(gè)不同的線程,從而實(shí)現(xiàn)多客戶端聊天,大大增強(qiáng)了程序?qū)Ψ?wù)器資源的利用和客戶的等待是時(shí)間??蛻舳伺c客戶端以及客戶端與服務(wù)器端采用事先約定好的數(shù)據(jù)結(jié)構(gòu)作為傳輸數(shù)據(jù)結(jié)構(gòu),以便于客戶端和服務(wù)器端順利通信。客戶之間的通信經(jīng)由服務(wù)器處理之后轉(zhuǎn)發(fā),服務(wù)器端對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單校驗(yàn),以實(shí)現(xiàn)客戶端之間的點(diǎn)對(duì)點(diǎn)通信。關(guān)鍵詞:協(xié)議,即時(shí)通訊,多線程abstracttoday, network is more and more developed, and people are more and more dependent on network, nearly are not inseparable from the network.so there are more and more tools of communication, but,as we all know between different workstations, servers, wantting to communicate, due to the existence of the protocol .the protocol can help achieve high efficiency and security communication.in this paper, it is mainly about a protocol design for instant messaging to provide users with a reliable, professional online communication platform.this graduation design uses the client/server architecture model, simulate the existing network communication protocols, and use the basic knowledge of computer network such as tcp, multithreading and windows sockets and so on .the design is a simple network communication protocol of application layer.this system is based on tcp, and uses the visual c + + 6.0 platform, takes advantages of the mfc framework which provids the windows socket programming mechanism design, makes uses of dialog -based components to build interface, and utilize the c+ object offers the class design principles, and uses vc + + language.client and server through socket establish the connection.in the project ,the design of the server takes advantagea of the multithreading technology, so can support to run a number of different threads in the midst of a single program, so as to realize multiple clients to run at the same time , it greatly enhance the using rate of the server resources and the clients waiting time .the client and the client , the client and the server use the pre-arranged data structure as the receiving data and the dispatching data, so that the client and server communication smoothly.clients communication between the server, after received a data package, it firstly makes a simpe processing ,then putforwards ,so that realizing the point-to-point communication between clients.key words: protocol,instant messagint,multithreading目錄abstractiv第一章 緒 論11.1 項(xiàng)目開發(fā)背景和意義11.2 開發(fā)和運(yùn)行環(huán)境2第二章 開發(fā)工具簡(jiǎn)介32.1 visual c+6.0介紹32.2 mfc32.3 msdn42.4 visual assist x4第三章 協(xié)議設(shè)計(jì)涉及知識(shí)簡(jiǎn)介63.1 即時(shí)通訊63.2 網(wǎng)絡(luò)協(xié)議73.3 osi七層網(wǎng)絡(luò)模型73. 4 tcp/ip協(xié)議83.5 tcp傳輸83.6 c/s編程模型93.7 socket套接字103.8 網(wǎng)絡(luò)字節(jié)順序103.9 windows sockets113.10 同步、異步、阻塞和非阻塞123.11 多線程12第四章 需求分析144.1 整體需求分析144.2 可行性分析14第五章 概要設(shè)計(jì)155.1 性能要求155.2 通訊協(xié)議格式設(shè)計(jì)155.3 軟件工作模式圖165.4 軟件設(shè)計(jì)原理16第六章 詳細(xì)設(shè)計(jì)196.1 協(xié)議設(shè)計(jì)196.2 服務(wù)器端工程設(shè)計(jì)216.3 客戶端工程設(shè)計(jì)266.4多線程設(shè)計(jì)(一臺(tái)服務(wù)器與多個(gè)客戶端通信)356.5 協(xié)議工作設(shè)計(jì)38第七章 系統(tǒng)測(cè)試467.1 測(cè)試目的467.2 測(cè)試要求467.3 測(cè)試方法467.4 系統(tǒng)測(cè)試47總 結(jié)59致 謝60參考文獻(xiàn)61第一章 緒論第一章 緒 論1.1 項(xiàng)目簡(jiǎn)介1.1.1 項(xiàng)目開發(fā)背景和意義 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,使得人類社會(huì)正全面邁向信息化。近幾年來(lái),信息網(wǎng)絡(luò)更是以前所未有的速度不斷發(fā)展壯大,廣泛應(yīng)用于人類的生產(chǎn)、生活、學(xué)習(xí)和娛樂等各個(gè)領(lǐng)域,極大地促進(jìn)了人類社會(huì)的進(jìn)步。即時(shí)通訊作為目前的主要應(yīng)用之一,已經(jīng)極大的融入到我們生活的各個(gè)領(lǐng)域。 即時(shí)通信是一個(gè)終端連往一個(gè)即時(shí)通信網(wǎng)路的服務(wù)。即時(shí)通信不同于e-mail在于它的交談是實(shí)時(shí)的。大部分的即時(shí)通信服務(wù)提供了presence awareness的特性顯示聯(lián)絡(luò)人名單,聯(lián)絡(luò)人是否在在線與能否與聯(lián)絡(luò)人交談。 即時(shí)通信(instant message),由于其具有實(shí)時(shí)性、跨平臺(tái)性、成本低、效率高等優(yōu)點(diǎn)而受到廣泛的使用。即時(shí)通訊軟件的迅速發(fā)展已經(jīng)突破了作為技術(shù)工具的極限,被認(rèn)為是現(xiàn)代交流方式的象征。在網(wǎng)絡(luò)通訊時(shí),必須選用正確的網(wǎng)絡(luò)通訊協(xié)議,以保證不同連接方式和操作系統(tǒng)的計(jì)算機(jī)之間可以進(jìn)行數(shù)據(jù)傳輸。如何讓通訊雙方更決捷有效安全地溝通,就成為大家關(guān)心的問題。一個(gè)良好的協(xié)議設(shè)計(jì)可以很好的解決這個(gè)問題。一個(gè)良好的協(xié)議設(shè)計(jì)可以很好的解決這個(gè)問題。 我們知道,并且大家也都在用,qq,微信,飛信,msn,yy等眾多的即時(shí)通訊軟件,已經(jīng)成為了目前大家交流必不可少的工具,然而這些聊天工具雖然方便、實(shí)用,但是,由于其功能太多,如游戲,社區(qū),電子郵件等功能,占據(jù)內(nèi)存空間過大,從一定程度上來(lái)說,更多的已經(jīng)演變成了一種娛樂工具,不能作為即時(shí)通訊的專用工具。簽于此,一個(gè)簡(jiǎn)單友好的即時(shí)通訊的網(wǎng)絡(luò)聊天工具的開發(fā)就顯得必不可少了,而我們知道,網(wǎng)絡(luò)通訊少不了相應(yīng)的軟件協(xié)議的支持,我們本次的設(shè)計(jì)目標(biāo)就是設(shè)計(jì)一個(gè)專用于支持內(nèi)容簡(jiǎn)單,占用內(nèi)存小的計(jì)算機(jī)之間即時(shí)通訊的網(wǎng)絡(luò)聊天協(xié)議。 本系統(tǒng)使用當(dāng)前流行的mfc框架,c+語(yǔ)言編寫,采用面向?qū)ο蟮乃枷朐O(shè)計(jì),基于tcp傳輸控制協(xié)議。切實(shí)考慮大眾用戶的需求,為方便用戶之間的溝通,為大家提供了一個(gè)簡(jiǎn)單的用以支持即時(shí)通訊的網(wǎng)絡(luò)聊天協(xié)議。 本文首先對(duì)本次協(xié)議設(shè)計(jì)所用的開發(fā)平臺(tái)以及開發(fā)工具做了簡(jiǎn)單介紹, 其次又對(duì)開發(fā)中所用到的知識(shí)點(diǎn)做了系列概括,接著是需求分析,在此基礎(chǔ)上那個(gè)提出了對(duì)軟件協(xié)議設(shè)計(jì)的設(shè)計(jì)方案,然后分析了協(xié)議的各類型字段,最后講了該協(xié)議的具體實(shí)現(xiàn)。 網(wǎng)絡(luò)協(xié)議一直以來(lái)作為信息網(wǎng)絡(luò)的核心支柱之一。近年來(lái),網(wǎng)絡(luò)的新概念新方法、新技術(shù)以驚人的速度不斷涌現(xiàn),軟硬件不斷升級(jí)換代,新的產(chǎn)品和業(yè)務(wù)更是層出不窮出不窮,令人目不暇接,網(wǎng)絡(luò)協(xié)議更是不斷完善,以來(lái)更好的為信息化社會(huì)服務(wù)。不難發(fā)現(xiàn),網(wǎng)絡(luò)技術(shù)如同自然界的生物一樣,是一個(gè)新舊更替,優(yōu)勝劣汰的發(fā)展過程。陳舊落后的技術(shù)不論是網(wǎng)絡(luò)協(xié)議還是其他,必然被新的,更加先進(jìn)的技術(shù)所替代。作為網(wǎng)絡(luò)工程系的學(xué)生,必須在打牢網(wǎng)絡(luò)理論基礎(chǔ),不斷更新學(xué)習(xí)各種網(wǎng)絡(luò)新技術(shù)的同時(shí),并且能夠把學(xué)到的理論知識(shí)應(yīng)用于實(shí)踐中去,以便于深入理解網(wǎng)絡(luò)體系結(jié)構(gòu)和運(yùn)行機(jī)制,切實(shí)掌握各種網(wǎng)絡(luò)技術(shù)的基本原理、軟、硬件設(shè)計(jì)方法和相關(guān)協(xié)議以及算法。而本次設(shè)計(jì)就是針對(duì)這一目標(biāo),結(jié)合本人在大學(xué)四年的理論學(xué)習(xí)和各種實(shí)踐,對(duì)網(wǎng)絡(luò)協(xié)議一次模擬設(shè)計(jì),及時(shí)對(duì)本人大學(xué)學(xué)習(xí)情況的考察,也是自己對(duì)自己在大學(xué)所學(xué)知識(shí)的一次系統(tǒng)整疊和梳58西安工程大學(xué)學(xué)士學(xué)位論文理,更是對(duì)自己的一次鍛煉。1.1.2 開發(fā)和運(yùn)行環(huán)境 操作系統(tǒng):win7編輯和運(yùn)行平臺(tái):visual c + + 6.0編碼語(yǔ)言:mfc協(xié)助軟件:msdn, visual assist x 第二章 開發(fā)工具簡(jiǎn)介第二章 開發(fā)工具簡(jiǎn)介2.1 visual c+6.0介紹2.1.1 特色visual c+6.0由microsoft開發(fā), 它不僅是一個(gè)c+編譯器,而且是一個(gè)基于windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated development environment,ide)。visual c+6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppwizard、類向?qū)lass wizard等開發(fā)工具。 這些組件通過一個(gè)名為developer studio的組件集成為和諧的開發(fā)環(huán)境。microsoft的主力軟件產(chǎn)品。visual c+是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。visual c+6.0以擁有“語(yǔ)法高亮”,自動(dòng)編譯功能以及高級(jí)除錯(cuò)功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及創(chuàng)建預(yù)編譯頭文件(stdafx.h)、最小重建功能及累加連結(jié)(link)著稱。這些特征明顯縮短程序編輯、編譯及連結(jié)的時(shí)間花費(fèi),在大型軟件計(jì)劃上尤其顯著。2.1.2缺點(diǎn)由于c+是由c語(yǔ)言發(fā)展起來(lái)的,也支持c語(yǔ)言的編譯。6.0版本是使用最多的版本,很經(jīng)典。最大的缺點(diǎn)是對(duì)于模版的支持比較差?,F(xiàn)在最新補(bǔ)丁為sp6,推薦安裝,否則易出現(xiàn)編譯時(shí)假死狀態(tài)。僅支持windows操作系統(tǒng)。目前發(fā)現(xiàn)與windows 7兼容性不好,安裝成功后可能會(huì)出現(xiàn)無(wú)法打開cpp文件的現(xiàn)象。2.2 mfc2.2.1 mfc簡(jiǎn)介 mfc(microsoftfoundationclasses),是微軟公司提供的一個(gè)基礎(chǔ)類(microsoft foundation classes),以c+類的形式封裝了windows的api,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類包含大量windows句柄封裝類和很多windows的內(nèi)建控件和組件的封裝類。 mfc應(yīng)用程序的總體結(jié)構(gòu)通常由開發(fā)人員從mfc類派生的幾個(gè)類和一個(gè)cwinapp類對(duì)象(應(yīng)用程序?qū)ο?組成。mfc 提供了mfc appwizard 自動(dòng)生成框架。windows 應(yīng)用程序中,mfc的主要文件為“afxwin.h”.mfc實(shí)際上是微軟提供的,用于在c+環(huán)境下編寫應(yīng)用程序的一個(gè)框架和引擎。vc+是windows下開發(fā)人員使用的專業(yè)c+ sdk(sdk,standard software develop kit,專業(yè)軟件開發(fā)平臺(tái)),mfc就是掛在它之上的一個(gè)輔助軟件開發(fā)包。mfc作為與vc+血肉相連的部分。只不過mfc類是微軟為vc+專配的。mfc是winapi與c+的結(jié)合。api,即微軟提供的windows下應(yīng)用程序的編程語(yǔ)言接口,是一種軟件編程的規(guī)范,但不是一種程序開發(fā)語(yǔ)言本身,可以允許用戶使用各種各樣的第三方的編程語(yǔ)言來(lái)進(jìn)行對(duì)windows下應(yīng)用程序的開發(fā),使這些被開發(fā)出來(lái)的應(yīng)用程序能在windows下運(yùn)行。編程語(yǔ)言函數(shù)本質(zhì)上全部源于api,因此用它們開發(fā)出來(lái)的應(yīng)用程序都能工作在windows的消息機(jī)制和繪圖里,遵守windows作為一個(gè)操作系統(tǒng)的內(nèi)部實(shí)現(xiàn)。mfc是微軟對(duì)api函數(shù)的專用c+封裝,這種結(jié)合一方面讓用戶使用微軟的專業(yè)c+ sdk來(lái)進(jìn)行windows下應(yīng)用程序的開發(fā)變得容易,因?yàn)閙fc是對(duì)api的封裝,微軟做了大量的工作,隱藏了好多程序開發(fā)人員在windows下用c+ & mfc編制軟件時(shí)的大量?jī)?nèi)節(jié),如應(yīng)用程序?qū)崿F(xiàn)消息的處理、設(shè)備環(huán)境繪圖,這種結(jié)合是以方便為目的的,必定要付出一定代價(jià),因此就造成了mfc對(duì)類封裝中的一定程度的的冗余和迂回,但這是可以接受的。 mfc不只是一個(gè)功能單純的界面開發(fā)系統(tǒng),它提供的類絕大部分用來(lái)進(jìn)行界面開發(fā),關(guān)聯(lián)一個(gè)窗口的動(dòng)作,但它提供的類中有好多類不與一個(gè)窗口關(guān)聯(lián),即類的作用不是一個(gè)界面類,不實(shí)現(xiàn)對(duì)一個(gè)窗口對(duì)象的控制(如創(chuàng)建、銷毀),而是一些在windows中實(shí)現(xiàn)內(nèi)部處理的類,如數(shù)據(jù)庫(kù)的管理類等。 windows作為一個(gè)提供功能強(qiáng)大的應(yīng)用程序接口編程的操作系統(tǒng),因?yàn)閍pi函數(shù)實(shí)在太多了,而且名稱很亂,從零構(gòu)架一個(gè)窗口動(dòng)輒就是上百行的代碼。mfc是面向?qū)ο蟪绦蛟O(shè)計(jì)與application framework的完美結(jié)合,它將傳統(tǒng)的api進(jìn)行了分類封裝,創(chuàng)建了程序的一般框架。windows作為一個(gè)提供功能強(qiáng)大的應(yīng)用程序接口編程的操作系統(tǒng),因?yàn)閍pi函數(shù)實(shí)在太多了,而且名稱很亂,從零構(gòu)架一個(gè)窗口動(dòng)輒就是上百行的代碼。mfc是面向?qū)ο蟪绦蛟O(shè)計(jì)與application framework的完美結(jié)合,它將傳統(tǒng)的api進(jìn)行了分類封裝,創(chuàng)建了程序的一般框架。2.3 msdn2.3.1 msdn 簡(jiǎn)介msdn(microsoft developer network)是早期微軟在推廣win32 程序設(shè)計(jì)以及開發(fā)工具時(shí),專門為開發(fā)人員所提供的一個(gè)服務(wù),是使用微軟技術(shù)開發(fā)軟件或應(yīng)用程序時(shí)必定會(huì)參訪的地方,同時(shí)它也有提供訂閱的服務(wù),由微軟不定時(shí)供應(yīng)最新的軟件及技術(shù)文件,msdn的技術(shù)文件庫(kù)是免費(fèi)開放讓所有人在聯(lián)機(jī)閱讀,但光盤的版本必須要利用msdn library subscription才可以拿到,不過自從visual studio 2005開始,msdn library即提供免費(fèi)的網(wǎng)絡(luò)下載。也許是受到msdn成功與廣為開發(fā)人員所知的影響,升陽(yáng)也將它們的java文件庫(kù)定名為sun developer network (sdn)一般情況下,很多人誤認(rèn)為 msdn 為聯(lián)機(jī)幫助文件和技術(shù)文獻(xiàn)的集合。但事實(shí)上,這兩者只占 msdn 龐大計(jì)劃的一小部分。產(chǎn)品下載、在線電子教程、msdn 雜志和技術(shù)緊急電話支援是要付費(fèi)的,其余基本免費(fèi)。2.4 visual assist x 2.4.1 visual assist x 簡(jiǎn)介visual assist x是一款非常好的microsoft visual studio 2005和visual studio .net插件,支持c/c,c,asp,visual basic,java和html等語(yǔ)言,能自動(dòng)識(shí)別各種關(guān)鍵字、系統(tǒng)函數(shù)、成員變量、自動(dòng)給出輸入提示、自動(dòng)更正大小寫錯(cuò)誤、自動(dòng)標(biāo)示錯(cuò)誤等,有助于提高開發(fā)過程的自動(dòng)化和開發(fā)效率。第三章 協(xié)議設(shè)計(jì)涉及知識(shí)簡(jiǎn)介 第三章 協(xié)議設(shè)計(jì)涉及知識(shí)簡(jiǎn)介3.1 即時(shí)通訊3.1.1 簡(jiǎn)介即時(shí)通訊(instant messenger,簡(jiǎn)稱im),im最早的創(chuàng)始人是三個(gè)以色列青年,是他們?cè)?996年開發(fā)出來(lái)的,取名叫icq。是一個(gè)終端服務(wù),允許兩人或多人使用網(wǎng)路即時(shí)的傳遞文字訊息、檔案、語(yǔ)音與視頻交流。即時(shí)通訊按使用用途分為企業(yè)即時(shí)通訊和網(wǎng)站即時(shí)通訊,根據(jù)裝載的對(duì)象又可分為手機(jī)即時(shí)通訊和pc即時(shí)通訊,手機(jī)即時(shí)通訊代表是短信,網(wǎng)站、視頻即時(shí)通訊如:米聊、yy語(yǔ)音、qq、msn、百度hi、新浪uc、阿里旺旺、網(wǎng)易泡泡、網(wǎng)易cc、盛大et、移動(dòng)飛信、企業(yè)飛信等應(yīng)用形式。3.1.2 行業(yè)分析據(jù)最新的報(bào)告顯示,2008年中國(guó)企業(yè)即時(shí)通訊市場(chǎng)終端用戶規(guī)模達(dá)到2236萬(wàn)人,與2007年的1813萬(wàn)人相比,同比增長(zhǎng)23.3%。已經(jīng)開始全面入市場(chǎng),競(jìng)爭(zhēng)格局也已經(jīng)初顯端倪,主要以高效、穩(wěn)定和安全作為其產(chǎn)品開發(fā)的重點(diǎn)。3.1.3 即時(shí)通訊的新發(fā)展(1)由pc即時(shí)通信向手機(jī)客服端轉(zhuǎn)移由pc即時(shí)通信向手機(jī)客服端轉(zhuǎn)移,具有以下特點(diǎn):省錢,方便,可靠,超強(qiáng),夠酷,時(shí)尚,環(huán)保,驚喜,厲害。(2)網(wǎng)頁(yè)即時(shí)通訊新趨勢(shì)a.論壇、sns社區(qū):滿足論壇、社區(qū)的注冊(cè)用戶和游客即時(shí)通訊的需求,可以提高用戶的活躍度。b.垂直門戶、電子商務(wù):滿足網(wǎng)站訪客進(jìn)行話題討論、咨詢的需求,可以提高用戶停留時(shí)間。c.游戲、客戶端軟件:按需求提供im定制服務(wù),有效降低im開發(fā)成本。完全基于網(wǎng)頁(yè)的即時(shí)通訊a.無(wú)需下載、安裝客戶端軟件。b.聊天記錄無(wú)論在哪臺(tái)電腦上都可以查看。c.可以和社區(qū)網(wǎng)站無(wú)縫結(jié)合,進(jìn)一步提高用戶之間的交流互動(dòng)。3.1.4 安全問題目前,即時(shí)通訊的主要挑戰(zhàn)是安全,安全威脅包括:id被盜、隱私威脅、病毒威脅等,下面是即時(shí)通訊用戶應(yīng)該遵循的一些安全準(zhǔn)則,以保護(hù)自身的網(wǎng)絡(luò)安全和隱私。即時(shí)通訊安全準(zhǔn)則主要包括:不隨意泄露即時(shí)通訊的用戶名和密碼;不在第三方網(wǎng)站登錄網(wǎng)頁(yè)版即時(shí)通訊軟件;定期更改密碼;謹(jǐn)慎使用未經(jīng)認(rèn)證的即時(shí)通訊插件;在即時(shí)通訊設(shè)置中開啟文件自動(dòng)傳輸病毒掃描選項(xiàng);不接收來(lái)歷不明或可疑的文件和網(wǎng)址鏈接。3.2 網(wǎng)絡(luò)協(xié)議3.2.1定義協(xié)議是用來(lái)描述進(jìn)程之間信息交換數(shù)據(jù)時(shí)的規(guī)則術(shù)語(yǔ)義。在計(jì)算機(jī)網(wǎng)絡(luò)中,兩個(gè)相互通信的實(shí)體處在不同的地理位置,其上的兩個(gè)進(jìn)程相互通信,需要通過交換信息來(lái)協(xié)調(diào)它們的動(dòng)作達(dá)到同步,而信息的交換必須按照預(yù)先共同約定好的規(guī)則進(jìn)行。網(wǎng)絡(luò)協(xié)議的定義:為計(jì)算機(jī)網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或約定的集合。3.1.2 網(wǎng)絡(luò)協(xié)議是由三個(gè)要素組成a.語(yǔ)義:語(yǔ)義是解釋控制信息每個(gè)部分的意義,它規(guī)定了需要發(fā)出何種控制信息,以及完成的動(dòng)作與做出什么樣的響應(yīng)。b.語(yǔ)法:語(yǔ)法是用戶數(shù)據(jù)與控制信息的結(jié)構(gòu)與格式,以及數(shù)據(jù)出現(xiàn)的順序。c.時(shí)序:時(shí)序是對(duì)事件發(fā)生順序的詳細(xì)說明。(也可稱為“同步”)。人們形象地把這三個(gè)要素描述為:語(yǔ)義表示要做什么,語(yǔ)法表示要怎么做,時(shí)序表示做的順序。3.3 osi七層網(wǎng)絡(luò)模型3.3.1osi七層模型簡(jiǎn)介osi網(wǎng)絡(luò)模型是一個(gè)開放式系統(tǒng)互聯(lián)的參考模型。通過這個(gè)參考模型,用戶可以非常直觀地了解網(wǎng)絡(luò)通信的基本過程和原理。osi參考模型如圖所示。用戶從osi網(wǎng)絡(luò)模型可以很直觀地看到,網(wǎng)絡(luò)數(shù)據(jù)從發(fā)送方到達(dá)接收方的過程中,數(shù)據(jù)的流向以及經(jīng)過的通信層和相應(yīng)的通信協(xié)議。事實(shí)上在網(wǎng)絡(luò)通信的發(fā)送端,其通信數(shù)據(jù)每到一個(gè)通信層,都會(huì)被該層協(xié)議在數(shù)據(jù)中添加一個(gè)包頭數(shù)據(jù)。而在接收方恰好相反,數(shù)據(jù)通過每一層時(shí)都會(huì)被該層協(xié)議剝?nèi)ハ鄳?yīng)的包頭數(shù)據(jù)。用戶也可以這樣理解,即網(wǎng)絡(luò)模型中的各層都是對(duì)等通信。在osi七層網(wǎng)絡(luò)模型中,各個(gè)網(wǎng)絡(luò)層都具有各自的功能,如表所示。各網(wǎng)絡(luò)層的功能協(xié) 議 層 名功 能 概 述物理硬件層表示計(jì)算機(jī)網(wǎng)絡(luò)中的物理設(shè)備。常見的有計(jì)算機(jī)網(wǎng)卡等數(shù)據(jù)鏈路層將傳輸數(shù)據(jù)進(jìn)行壓縮與加壓縮網(wǎng)絡(luò)層將傳輸數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)傳輸數(shù)據(jù)傳輸層進(jìn)行信息的網(wǎng)絡(luò)傳輸會(huì)話層建立物理網(wǎng)絡(luò)的連接表示層將傳輸數(shù)據(jù)以某種格式進(jìn)行表示應(yīng)用層應(yīng)用程序接口%注意:在表1.1中列出了osi七層網(wǎng)絡(luò)模型中各層的基本功能概述。用戶根據(jù)這些基本的功能概述會(huì)對(duì)該網(wǎng)絡(luò)模型有一個(gè)比較全面的認(rèn)識(shí)。3. 4 tcp/ip協(xié)議3.4.1 tcp/ip協(xié)議簡(jiǎn)介tcp/ip協(xié)議實(shí)際上是一個(gè)協(xié)議簇,其包括了很多協(xié)議。例如,ftp(文本傳輸協(xié)議)、smtp(郵件傳輸協(xié)議)等應(yīng)用層協(xié)議。tcp/ip協(xié)議的網(wǎng)絡(luò)模型只有4層,包括數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、數(shù)據(jù)傳輸層和應(yīng)用層,各層功能如下: tcp/ip網(wǎng)絡(luò)協(xié)議各層功能協(xié) 議 層 名功 能 概 述數(shù)據(jù)鏈路層網(wǎng)卡等網(wǎng)絡(luò)硬件設(shè)備以及驅(qū)動(dòng)程序網(wǎng)絡(luò)層ip協(xié)議等互聯(lián)協(xié)議數(shù)據(jù)傳輸層為應(yīng)用程序提供通信方法,通常為tcp、udp協(xié)議應(yīng)用層負(fù)責(zé)處理應(yīng)用程序的實(shí)際用于層協(xié)議在數(shù)據(jù)傳輸層中,包括了tcp(transmission control protocol)和udp(user datagram protocol)協(xié)議。其中,tcp協(xié)議是基于面向連接的可靠的通信協(xié)議。其具有重發(fā)機(jī)制,即當(dāng)數(shù)據(jù)被破壞或者丟失時(shí),發(fā)送方將重發(fā)該數(shù)據(jù)。而udp協(xié)議是基于用戶數(shù)據(jù)報(bào)協(xié)議,屬于不可靠連接通信的協(xié)議。例如,當(dāng)用戶使用udp協(xié)議發(fā)送一條消息時(shí),并不知道該消息是否已經(jīng)到達(dá)接收方,或者在傳輸過程中數(shù)據(jù)已經(jīng)丟失。但是在即時(shí)通信中,udp協(xié)議在對(duì)一些對(duì)時(shí)間要求較高的網(wǎng)絡(luò)數(shù)據(jù)傳輸方面有著重要的作用。3.5 tcp傳輸3.5.1簡(jiǎn)介tcp,transfer control protocol的縮寫(傳輸控制協(xié)議),是一種面向連接的網(wǎng)絡(luò)傳輸協(xié)議。tcp協(xié)議的特點(diǎn)是,支持多數(shù)據(jù)流操作,提供流控和錯(cuò)誤控制,甚至能完成對(duì)亂序到達(dá)報(bào)文的重新排序等。因此,tcp提供了可靠的應(yīng)用數(shù)據(jù)傳輸服務(wù)。3.5.2通信雙方使用tcp傳輸?shù)囊话氵^程如圖:3.5.3 tcp協(xié)議和udp協(xié)議的區(qū)別(1)tcp協(xié)議面向連接,udp協(xié)議面向非連接(2)tcp協(xié)議傳輸速度慢,udp協(xié)議傳輸速度快(3)tcp協(xié)議保證數(shù)據(jù)順序,udp協(xié)議不保證(4)tcp協(xié)議保證數(shù)據(jù)正確性,udp協(xié)議可能丟包(5)tcp協(xié)議對(duì)系統(tǒng)資源要求多,udp協(xié)議要求少3.6 c/s編程模型客戶機(jī)/服務(wù)器模型,又稱為client/server模型,簡(jiǎn)稱c/s架構(gòu),是一種非對(duì)稱式編程模式。c/s計(jì)算技術(shù)在信息產(chǎn)業(yè)當(dāng)中占有重要的地位。該模式的基本思想是把集中在一起的應(yīng)用劃分成為功能不同的兩個(gè)部分,分別在不同的計(jì)算機(jī)上運(yùn)行,通過它們之間的分工合作來(lái)實(shí)現(xiàn)一個(gè)完整的功能。對(duì)于這種模式而言其中一部分需要作為服務(wù)器,用來(lái)響應(yīng)并為客戶提供固定的服務(wù);另一部分則作為客戶機(jī)程序用來(lái)向服務(wù)器提出請(qǐng)求或要求某種服務(wù)。 在此“服務(wù)器”是指能在網(wǎng)絡(luò)上提供服務(wù)的任何程序。服務(wù)器接受網(wǎng)絡(luò)上的請(qǐng)求,完成服務(wù)后將結(jié)果返回給申請(qǐng)者。對(duì)于簡(jiǎn)單的服務(wù),把每個(gè)請(qǐng)求用一個(gè)ip數(shù)據(jù)報(bào)發(fā)給服務(wù)器,服務(wù)器用另一個(gè)數(shù)據(jù)報(bào)返回響應(yīng)??蛻魴C(jī)和服務(wù)器都是獨(dú)立的計(jì)算機(jī)。當(dāng)一臺(tái)連入網(wǎng)絡(luò)的計(jì)算機(jī)向其他計(jì)算機(jī)提供各種網(wǎng)絡(luò)服務(wù)(如數(shù)據(jù)、文件的共享等)時(shí),它就被叫做服務(wù)器。而那些用于訪問服務(wù)器資料的計(jì)算機(jī)則被叫做客戶機(jī)。嚴(yán)格說來(lái),客戶機(jī)/服務(wù)器模型并不是從物理分布的角度來(lái)定義,它所體現(xiàn)的是一種網(wǎng)絡(luò)數(shù)據(jù)訪問的實(shí)現(xiàn)方式。采用這種結(jié)構(gòu)的系統(tǒng)目前應(yīng)用非常廣泛。如賓館、酒店的客房登記、結(jié)算系統(tǒng),超市的pos系統(tǒng),銀行、郵電的網(wǎng)絡(luò)系統(tǒng)等。c/s編程模型是基于可靠連接的通信模型。在通信的雙方必須使用各自的ip地址以及端口進(jìn)行通信。否則,通信過程將無(wú)法實(shí)現(xiàn)。通常情況下,當(dāng)用戶使用c/s模型進(jìn)行通信時(shí),其通信的任意一方稱為客戶端,則另一方稱為服務(wù)器端。服務(wù)器端等待客戶端連接請(qǐng)求的到來(lái),這個(gè)過程稱為監(jiān)聽過程。通常,服務(wù)器監(jiān)聽功能是在特定的ip地址和端口上進(jìn)行。然后,客戶端向服務(wù)器發(fā)出連接請(qǐng)求,服務(wù)器響應(yīng)該請(qǐng)求則連接成功。否則,客戶端的連接請(qǐng)求失敗。c/s編程模型如圖所示: c/s編程模型由于客戶端連接服務(wù)器時(shí),需要使用服務(wù)器的ip地址和監(jiān)聽端口號(hào)才能完成連接。所以,服務(wù)器的ip地址和端口必須是固定的。在這里,向用戶介紹部分協(xié)議所使用的端口號(hào)碼。例如,http協(xié)議(網(wǎng)頁(yè)瀏覽服務(wù))所使用的端口號(hào)為80,ftp協(xié)議(文本傳輸)所使用的端口號(hào)是21。注意:用戶在實(shí)際編程中,通信雙方的連接以及數(shù)據(jù)通信均是基于socket(套接字)進(jìn)行的。3.7 socket套接字用戶在windows中編寫網(wǎng)絡(luò)通信程序時(shí),需要使用windows socket(windows套接字)。與windows套接字相關(guān)的api函數(shù)稱為winsock函數(shù)。在網(wǎng)絡(luò)通信的雙方,均有各自的套接字,并且該套接字與特定的ip地址和端口號(hào)相關(guān)聯(lián)。通常,套接字主要有兩種類型,分別是流式套接字(sock_stream)和數(shù)據(jù)報(bào)套接字(sock_dgram)。其中,流式套接字是專門用于使用tcp協(xié)議通信的應(yīng)用程序中,而數(shù)據(jù)報(bào)套接字則是專門用于使用udp協(xié)議進(jìn)行通信的應(yīng)用程序中。3.8 網(wǎng)絡(luò)字節(jié)順序網(wǎng)絡(luò)字節(jié)順序是指tcp/ip協(xié)議中規(guī)定的數(shù)據(jù)傳輸使用格式,與之相對(duì)的字節(jié)順序是主機(jī)字節(jié)順序。網(wǎng)絡(luò)字節(jié)順序表示首先將數(shù)據(jù)中最重要的字節(jié)進(jìn)行存儲(chǔ)。例如,當(dāng)數(shù)據(jù)0x358457使用網(wǎng)絡(luò)字節(jié)順序進(jìn)行存儲(chǔ)時(shí),該值在內(nèi)存中的存放順序?qū)⑹?x35、0x84、0x57。因?yàn)橥ㄐ艛?shù)據(jù)可能會(huì)在不同的機(jī)器之間進(jìn)行傳輸,所以通信數(shù)據(jù)必須以相同的格式進(jìn)行整理。只有經(jīng)過格式處理的通信數(shù)據(jù),才能在不同的機(jī)器之間進(jìn)行傳輸。3.9 windows sockets在mfc類庫(kù)中,幾乎封裝了windows sockets的全部功能。在本節(jié)中,將向用戶介紹兩個(gè)主要的套接字相關(guān)類,分別是casyncsocket類和csocket類。3.9.1 casyncsocket類在微軟基礎(chǔ)類庫(kù)中,casyncsocket類封裝了異步套接字的基本功能。用戶使用該類進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)牟襟E如下:(1)調(diào)用構(gòu)造函數(shù)創(chuàng)建套接字對(duì)象。(2)如果創(chuàng)建服務(wù)器端套接字,則調(diào)用函數(shù)bind()綁定本地ip和端口,然后調(diào)用函數(shù)listen()監(jiān)聽客戶端的請(qǐng)求。如果請(qǐng)求到來(lái),則調(diào)用函數(shù)accept()響應(yīng)該請(qǐng)求。如果創(chuàng)建客戶端套接字,則直接調(diào)用函數(shù)connect()連接服務(wù)器即可。(3)調(diào)用send()等功能函數(shù)進(jìn)行數(shù)據(jù)傳輸與處理。(4)關(guān)閉或銷毀套接字對(duì)象。注意:在mfc中,所有類中均有一個(gè)變量m_hwnd表示該類的實(shí)例句柄。3.9.2 csocket類微軟的mfc提供了兩個(gè)類:casyncsocket和csocket,極大地方便了socket功能的使用。這兩個(gè)類的繼承關(guān)系如圖: mfc socket類的繼承關(guān)系csocket類派生于casyncsocket類。該類不但具有casyncsocket類的基本功能,還具有串行化功能。用戶在實(shí)際編程中,通過將csocket類與csocketfile類和carchive類一起使用,能夠很好地管理數(shù)據(jù)以及發(fā)送數(shù)據(jù)。用戶使用該類進(jìn)行網(wǎng)絡(luò)編程的步驟如下: (1)創(chuàng)建csocket類對(duì)象。(2)如果創(chuàng)建服務(wù)器端套接字,則調(diào)用函數(shù)bind()綁定本地ip和端口,然后調(diào)用函數(shù)listen()監(jiān)聽客戶端的請(qǐng)求。如果請(qǐng)求到來(lái),則調(diào)用函數(shù)accept()響應(yīng)該請(qǐng)求。如果創(chuàng)建客戶端套接字,則直接調(diào)用函數(shù)connect()連接服務(wù)器即可。(3)創(chuàng)建與csocket類對(duì)象相關(guān)聯(lián)的csocketfile類對(duì)象。(4)創(chuàng)建與csocketfile類相關(guān)聯(lián)的carchive對(duì)象。(5)使用carchive類對(duì)象在客戶端和服務(wù)器之間進(jìn)行數(shù)據(jù)傳輸。(6)關(guān)閉或銷毀csocket類、csocketfile類和carchive類的3個(gè)對(duì)象。3.10 同步、異步、阻塞和非阻塞 同步(synchronous):所謂同步方式,就是發(fā)送方發(fā)送數(shù)據(jù)包以后,不等接受方響應(yīng),就接著發(fā)送下一個(gè)數(shù)據(jù)包。異步(asynchronous):異步方式就是當(dāng)發(fā)送方發(fā)送一個(gè)數(shù)據(jù)包以后,一直等到接受方響應(yīng)后才接著發(fā)送下一個(gè)數(shù)據(jù)包。阻塞(block):指執(zhí)行此套接字的網(wǎng)絡(luò)調(diào)用時(shí),直到調(diào)用成功才返回,否則此套節(jié)字就一直阻塞在網(wǎng)絡(luò)調(diào)用上,比如調(diào)用streamreader 類的readlin ( )方法讀取網(wǎng)絡(luò)緩沖區(qū)中的數(shù)據(jù),如果調(diào)用的時(shí)候沒有數(shù)據(jù)到達(dá),那么此readlin ( )方法將一直掛在調(diào)用上,直到讀到一些數(shù)據(jù),此函數(shù)調(diào)用才返回非阻塞(unblock):指在執(zhí)行此套接字的網(wǎng)絡(luò)調(diào)用時(shí),不管是否執(zhí)行成功,都立即返回。同樣調(diào)用streamreader 類的readlin ( )方法讀取網(wǎng)絡(luò)緩沖區(qū)中數(shù)據(jù),不管是否讀到數(shù)據(jù)都立即返回,而不會(huì)一直掛在此函數(shù)調(diào)用上。在windows網(wǎng)絡(luò)通信軟件開發(fā)中,最為常用的方法就是異步非阻塞套接字。平常所說的c/s(客戶端/服務(wù)器)結(jié)構(gòu)的軟件采用的方式就是異步非阻塞模式的。3.11 多線程3.11.1 概念每個(gè)正在系統(tǒng)上運(yùn)行的程序都是一個(gè)進(jìn)程。每個(gè)進(jìn)程包含一到多個(gè)線程。進(jìn)程也可能是整個(gè)程序或者是部分程序的動(dòng)態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨(dú)立執(zhí)行。也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級(jí)的進(jìn)程,它負(fù)責(zé)在單個(gè)程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個(gè)線程的調(diào)度和執(zhí)行。線程是程序中一個(gè)單一的順序控制流程.在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,稱為多線程.3.11.2 線程和進(jìn)程的區(qū)別在于子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)線程有自己的執(zhí)行堆棧和程序計(jì)數(shù)器為其執(zhí)行上下文.多線程主要是為了節(jié)約cpu時(shí)間,發(fā)揮利用,根據(jù)具體情況而定. 線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和cpu。3.11.3 多線程處理的優(yōu)點(diǎn)多線程技術(shù)使程序的響應(yīng)速度更快,因?yàn)橛脩艚缑婵梢栽谶M(jìn)行其他工作的同時(shí)一直處于活動(dòng)狀態(tài)。 (1)當(dāng)前沒有進(jìn)行處理的任務(wù)可以將處理器時(shí)間讓給其他任務(wù)。 (2)占用大量處理時(shí)間的任務(wù)可以定期將處理器時(shí)間讓給其他任務(wù)。 (3)可以隨時(shí)停止任務(wù)(4)可以分別設(shè)置各個(gè)任務(wù)的優(yōu)先級(jí)以優(yōu)化性能。 (5)是否需要?jiǎng)?chuàng)建多線程應(yīng)用程序取決于多個(gè)因素。在以下情況下,最適合采用多線程處理: (6)耗時(shí)或大量占用處理器的任務(wù)阻塞用戶界面操作。 (7)各個(gè)任務(wù)必須等待外部資源(如遠(yuǎn)程文件或 internet 連接)。 3.11.4 線程缺點(diǎn)(1)如果有大量的線程,會(huì)影響性能,因?yàn)椴僮飨到y(tǒng)需要在它們之間切換。(2)更多的線程需要更多的內(nèi)存空間。(3)線程可能會(huì)給程序帶來(lái)更多“bug”,因此要小心使用。(4)線程的中止需要考慮其對(duì)程序運(yùn)行的影響。(5)通常塊模型數(shù)據(jù)是在多個(gè)線程間共享的,需要防止線程死鎖情況的發(fā)生。3.11.5 線程同步是多線程編程的難點(diǎn),在多線程應(yīng)用中,考慮不同線程之間的數(shù)據(jù)同步和防止死鎖。當(dāng)兩個(gè)或多個(gè)線程之間同時(shí)等待對(duì)方釋放資源的時(shí)候就會(huì)形成線程之間的死鎖。為了防止死鎖的發(fā)生,需要通過同步來(lái)實(shí)現(xiàn)線程安全。mfc中線程的同步最常用的四種同步對(duì)象:(1)臨界區(qū)(ccriticalsection)(2)事件(cevent)(3)互斥量(cmutex)(4)信號(hào)量(csemaphore)9第四章 需求分析第四章 需求分析4.1 整體需求分析隨著社會(huì)的發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)日新月異,人們的交流方式越來(lái)越多,傳統(tǒng)的交流方式,如:email,電話等已經(jīng)受到了挑戰(zhàn),利用網(wǎng)絡(luò)免費(fèi),及時(shí)的和好友取得聯(lián)系已經(jīng)成為通信的必然趨勢(shì)。因此出現(xiàn)了qq,微信等聊天工具。然而這些聊天工具雖然方便、實(shí)用,但是,由于其功能太多,如游戲,社區(qū),電子郵件等功能,占據(jù)內(nèi)存空間過大,從一定程度上來(lái)說,更多的已經(jīng)演變成了一種娛樂工具,不能作為即時(shí)通訊的專用工具。簽于此,一個(gè)內(nèi)容簡(jiǎn)單,消耗內(nèi)存小,友好簡(jiǎn)潔的即時(shí)通訊的網(wǎng)絡(luò)聊天工具的開發(fā)就顯得必不可少了,而我們知道,網(wǎng)絡(luò)通訊少不了相應(yīng)的通信協(xié)議的支持,所以設(shè)計(jì)一個(gè)專用于支持計(jì)算機(jī)之間即時(shí)通訊的網(wǎng)絡(luò)聊天協(xié)議就顯得必不可少。4.2 可行性分析4.2.1 技術(shù)可行性visual c+ 6.0提供了功能強(qiáng)大的開發(fā)平臺(tái),編碼,調(diào)試和運(yùn)行于一體,使得程序界面的實(shí)現(xiàn)簡(jiǎn)單、快速、標(biāo)準(zhǔn)。mfc提供了簡(jiǎn)單易用的框架,用其進(jìn)行前臺(tái)設(shè)計(jì),方便簡(jiǎn)單。winsock為windows網(wǎng)絡(luò)編程提供了豐富的接口技術(shù),結(jié)合多線程技術(shù),使得此處的基于tcp網(wǎng)絡(luò)編程具有良好的健壯性和強(qiáng)大的可擴(kuò)展性。同時(shí),msdn library為編碼提供了大量可直接調(diào)用的函數(shù),為編碼的是吸納提供了很大的方便,在mfc編碼過程中,visual assist x具有代碼輸入更迅速,錯(cuò)誤自動(dòng)校正,信息獲取更加快速,增加了色彩和格式,拼寫檢查,拓展了基本編輯等功能,具有強(qiáng)大的編輯特色,增強(qiáng)microsoft開發(fā)環(huán)境下的編輯能力,提高了生產(chǎn)效率。本軟件最后所生成的.exe可執(zhí)行文件具有很好的可移植性。4.2.2 經(jīng)濟(jì)可行性經(jīng)濟(jì)可行性研究主要是預(yù)估費(fèi)用支出和對(duì)項(xiàng)目的經(jīng)濟(jì)效益進(jìn)行評(píng)價(jià),由于本系統(tǒng)的主要背景是畢業(yè)課程設(shè)計(jì),不注重直接的經(jīng)濟(jì)效益和其后的發(fā)展方向,只在注重自身水平和能力的提高,對(duì)自身的經(jīng)濟(jì)要求也不高,只要有一臺(tái)能運(yùn)行visual c+6.0軟件的電腦便可,所以不用考慮到經(jīng)濟(jì)問題。4.2.3 運(yùn)行可行性本系統(tǒng)為一個(gè)小型的即時(shí)聊天系統(tǒng),所耗費(fèi)的資源非常的小,現(xiàn)在一般的電腦無(wú)論是硬件還是軟件都能夠滿足條件,因此,本系統(tǒng)在運(yùn)行上是可行的。綜上所述,本系統(tǒng)的設(shè)計(jì)與開發(fā)在技術(shù)上和硬件設(shè)備上的條件都是滿足的,因此,它是可行的。第五章 概要設(shè)計(jì)第五章 概要設(shè)計(jì)5.1 性能要求 隨著網(wǎng)絡(luò)的發(fā)展,不同的開發(fā)商開發(fā)了不同的即時(shí)通訊的應(yīng)用協(xié)議。為了使通信成功可靠,網(wǎng)絡(luò)中的同一種即時(shí)通訊軟件,都必須使用同一語(yǔ)言,不能帶有方言。因而必須嚴(yán)格的定義不同用戶之間的每個(gè)包中每個(gè)字節(jié)中的每一位。這些協(xié)議絕大多數(shù)建立在tcp/ip協(xié)議族上,約定好通用的通信方式、語(yǔ)義、及數(shù)據(jù)格式,即即時(shí)通訊應(yīng)用協(xié)議。已經(jīng)開發(fā)的眾多協(xié)議中筆者認(rèn)為較為成功的當(dāng)屬qq、微信、淘寶旺旺等。不同的開發(fā)商因即時(shí)通訊軟件的應(yīng)用重心不同,其協(xié)議的側(cè)重點(diǎn)也不同,且絕大多數(shù)為廠商保密。本協(xié)議的設(shè)計(jì)旨在開發(fā)一開放的、安全的、可擴(kuò)展的、易于程序開發(fā)的即使通訊軟件協(xié)議。5.1.1在設(shè)計(jì)即時(shí)通訊協(xié)議時(shí),筆者認(rèn)為有幾點(diǎn)必須考慮:(1) 協(xié)議對(duì)下層協(xié)議的支持考慮到程序開發(fā)者對(duì)下層協(xié)議選擇上有不同的看法,協(xié)議設(shè)計(jì)時(shí)必須考慮下層的協(xié)議,以便程序開發(fā)者根據(jù)不同的下層協(xié)議運(yùn)用不同的傳輸手段。(2)數(shù)據(jù)的保密由于即時(shí)通訊軟件的不同需求,開發(fā)者可能要對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,因此在協(xié)議中應(yīng)該對(duì)數(shù)據(jù)是否加密、加密算法留有標(biāo)記。本次協(xié)議設(shè)計(jì)未實(shí)現(xiàn)這一點(diǎn)。(3) 傳輸可靠性:由于網(wǎng)絡(luò)傳輸?shù)牟环€(wěn)定性,根據(jù)經(jīng)驗(yàn)大于1024byte的包較小于1024byte的包更易丟失,因此在應(yīng)用層傳給傳輸層的包應(yīng)小于1000byte,而實(shí)際的數(shù)據(jù)包往往大于1000byte,因此應(yīng)在協(xié)議中留有分篇傳輸?shù)奈?本次設(shè)計(jì)也未能實(shí)現(xiàn)這一點(diǎn),只是通過限制傳輸?shù)臄?shù)據(jù)來(lái)機(jī)械的控制了這一點(diǎn)。(4)協(xié)議的通用性與可擴(kuò)展性:由于無(wú)法對(duì)新技術(shù)的發(fā)展有精確的把握應(yīng)在協(xié)議中留有冗余位,以便適應(yīng)新的應(yīng)用。(5)協(xié)議的簡(jiǎn)潔高效性:協(xié)議的設(shè)計(jì)不應(yīng)過于復(fù)雜,應(yīng)給程序員開發(fā)程序留有”自由空間”。5.2 通訊協(xié)議格式設(shè)計(jì)5.2.1協(xié)議字段設(shè)計(jì)圖示此通訊協(xié)議具體格式,包括判斷消息屬于哪個(gè)類型、消息發(fā)送者、消息接收者、發(fā)送數(shù)據(jù)、消息長(zhǎng)度共5部分,其字節(jié)分配如圖所示與表示的含義:標(biāo)識(shí)funsender28recerverid28connect1024len數(shù)據(jù)類型enum(fun)char char char int含義消息類型發(fā)送者接受者發(fā)送數(shù)據(jù)消息長(zhǎng)度長(zhǎng)度(byte)42828102445.2.2協(xié)議字段設(shè)計(jì)說明西安工程大學(xué)學(xué)士學(xué)位論文(1) fun功能標(biāo)識(shí)定義為枚舉類型(enum),占4個(gè)byte。用它來(lái)聲明一組命名的常數(shù),當(dāng)一個(gè)變量有幾種可能的取值時(shí),可以將它定義為枚舉類型,在win32機(jī)器上,枚舉類型所占字節(jié)數(shù)總是4byte,在上面代碼片段中sizeof(enum),;sizeof(fun),sizeof(login)都是4byte。(2) fun分別包括login,logout,logok,logerr,shake,transmit,svrstop,errl。llogin表示用戶登錄,logout表示用戶退出,logok表示用戶登陸成功,logerr表示用戶登陸失敗,shake表示震動(dòng),transnit表示信息傳輸,srrstop表示服務(wù)器停止,err表示數(shù)據(jù)傳送出錯(cuò)。(2) senderid是發(fā)送者的標(biāo)識(shí),用以標(biāo)記信息的來(lái)源id;(3) recerverid是接收者的標(biāo)識(shí),用以標(biāo)記信息的目的id;(4) connect是要傳輸?shù)臄?shù)據(jù);(5) len記錄了傳輸數(shù)據(jù)的長(zhǎng)度,用于在服務(wù)器端進(jìn)行簡(jiǎn)單校驗(yàn),如果出錯(cuò),則提醒發(fā)送者傳輸錯(cuò)誤,同時(shí)直接丟棄接受到的錯(cuò)誤數(shù)據(jù),否則轉(zhuǎn)發(fā)數(shù)據(jù)給接收者;5.3 軟件工作模式圖5.4 軟件設(shè)計(jì)原理5.4.1 協(xié)議工作編程原理(1) 創(chuàng)建csocket對(duì)象,創(chuàng)建兩個(gè)csocket對(duì)象,分別為服務(wù)器端和客戶端的對(duì)象,如圖:csocket serversocket;csocket clientsocket;(2)使用csocket對(duì)象的create()函數(shù)來(lái)創(chuàng)建windows socket。同時(shí),create()函數(shù)會(huì)自行調(diào)用bind()函數(shù)將此scoket綁定到指定的地址上面。例如:serversocket.create(5000); /服務(wù)器端需要指定一個(gè)端口號(hào)clientsocket.create(); /客戶端不用指定端口號(hào)(3)對(duì)于服務(wù)器端,需要這個(gè)socket不停地監(jiān)聽是否有來(lái)自于網(wǎng)絡(luò)上的鏈接請(qǐng)求,因此需要調(diào)用監(jiān)聽函數(shù)。例如:serversocket.listen();(4)對(duì)于客戶端,實(shí)行連接,例如:clientsocke

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論