版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計(論文)局域網(wǎng)飛鴿傳書軟件的設(shè)計與實(shí)現(xiàn)論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位類別:論文提交日期:局域網(wǎng)飛鴿傳書軟件的設(shè)計與實(shí)現(xiàn)摘要網(wǎng)絡(luò)通訊在當(dāng)今已經(jīng)不算新鮮事物,但大多數(shù)網(wǎng)絡(luò)通訊都需要借助Internet上的服務(wù)器,這就給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成了許多問題,如浪費(fèi)網(wǎng)絡(luò)資源、遭遇到網(wǎng)絡(luò)攻擊、傳播的病毒、破壞防御系統(tǒng)等等。由于互連網(wǎng)上的網(wǎng)絡(luò)通訊工具給企業(yè)內(nèi)部信息交流帶來了不便,所以為了方便內(nèi)部網(wǎng)絡(luò)的用戶之間的溝通,需要開發(fā)一個基于局域網(wǎng)的信息收發(fā)系統(tǒng)的即時通訊工具,實(shí)現(xiàn)在內(nèi)部網(wǎng)絡(luò)中進(jìn)行信息的交流。本課題設(shè)計主要針對局域網(wǎng)通訊而開發(fā)設(shè)計的,采用的是C/S構(gòu)架,類似飛鴿傳書系統(tǒng),來實(shí)現(xiàn)聊天、文件傳輸功能,并借助一些網(wǎng)絡(luò)通訊組件,成功的實(shí)現(xiàn)了在局域網(wǎng)上的即時通訊。本論文的目標(biāo)是設(shè)計一個類似飛鴿傳輸?shù)木钟蚓W(wǎng)通信軟件,并分析它在其領(lǐng)域的優(yōu)勢。本設(shè)計以C編寫,能在windows2000/net/xp等環(huán)境下運(yùn)行。設(shè)計共分為五大模塊,分別是:首先,介紹選題背景及意義和國內(nèi)外研究現(xiàn)狀;其次,介紹TCP/IP點(diǎn)對點(diǎn)協(xié)議技術(shù),C/S架構(gòu)和SOCKET網(wǎng)絡(luò)編程技術(shù);再次,對當(dāng)前局域網(wǎng)文件傳輸進(jìn)行需求分析并提出解決方案;然后,根據(jù)解決方案對系統(tǒng)進(jìn)行設(shè)計;最后,對工作計劃統(tǒng)計以及分析系統(tǒng)進(jìn)行測試并得到測試結(jié)果。關(guān)鍵詞:聊天;傳輸;socket;飛鴿傳書;C/S結(jié)構(gòu)DesignandImplementationIPMessengerBasedonLANAbstractThenetworkcommunicationalreadydonotcalculatethenewthingsnow,butthemajoritynetworkcommunicationallneedtobesupportbytheserverontheInternet,thismaketheseuserhavethelarge-scaleinternalnetworkwhomanyproblems,suchaswastenetworkresources,beattackedbynetwork,disseminationvirus,destructiondefensesystemandsoon.Becausetheinterconnectionnetworkcommunicationfacilitiesontheinteriorcommunicationbroughtinconvenientlyfortheenterprise,inordertofacilitateinternalcommunicationbetweennetworkuser's,needstodeveloponebasedonthelocalofinstantmessageareanetworkinformationreceivinganddispatchingsysteminstantmessagefacilities,realizescarriesontheinformationwhichnetworktheexchange.Thistopicdesignmainlyaimsatthelocalareanetworkcommunicationtodevelopthedesign,usesistheC/Sskeleton,likeIPMessenger,forchatandfilestransmission.LANagainstthetextchat,documentsandfolderstransmission,thedesignofafakeIPMessengerofLANsoftware,andanalyzeitintheirareasofadvantage.ThedesignisdevelopedbyCprogramitcanmakeinthecnvironmentofwindows2000/net/xpoftopicselection,intheenvironmentThedesignaltogetherdividesintofivebigmodules,respectivelyis:First,introductionselectedtopicbackgroundandsignificanceanddomesticandforeignresearchpresentsituation;Second,introducestheTCP/IPpointtopointprotocoltechnology;C/Sconstructiontechniqueandsocktnetworkprogrammingtechnology;Third,carriesonthedemandofthecurrentlocalareanetworkfiletransfertoanalyzeandproposethesolution;Fourth,carriesonthedesignaccordingtothesolutiontothesystem;Fifth,statistictheworkplan,awalysandtestthesystemandobtainsthetestnesult.Keywords:Chat;transmission;socket;C/Sskeleton;IPMessenger目錄論文總頁數(shù):20頁TOC\o"1-4"\h\z\u1 引言 11.1課題背景 11.2本課題主要研究背景 11.3本課題主要研究思路和方法 11.4研究項(xiàng)目的目的以及意義 21.5WINSOCKET的尋址方式 22 系統(tǒng)需求分析 22.1系統(tǒng)設(shè)計目標(biāo) 22.2系統(tǒng)總體需求分析 32.3組織結(jié)構(gòu)的分析 32.3.1開發(fā)運(yùn)行環(huán)境 32.3.2系統(tǒng)開發(fā)語言 43 理論知識 43.1C/S軟件架構(gòu)技術(shù) 43.2用戶數(shù)據(jù)報協(xié)議(UDP) 43.3單播、廣播、組播淺析 54 系統(tǒng)設(shè)計 54.1文字聊天模塊的整體構(gòu)架 54.2文件傳輸模塊的主要流程圖 64.3系統(tǒng)的主要功能模塊 64.3.1文字聊天的主登錄界面 64.3.2文字聊天信息的封裝 94.3.3聊天信息的加鎖 104.3.4文件傳輸?shù)慕缑?124.3.5用戶密封或加鎖傳輸文件 155 系統(tǒng)測試 175.1測試環(huán)境 175.2測試結(jié)果 17結(jié)論 17參考文獻(xiàn) 18致謝 19聲明 20引言1.1課題背景當(dāng)時間走向21世紀(jì),當(dāng)今時代也由工業(yè)經(jīng)濟(jì)漸漸成為了知識經(jīng)濟(jì)、信息經(jīng)濟(jì)的時代。信息的需求量的不停增加,促使了計算機(jī)通信的日新月異!雖然網(wǎng)絡(luò)的使用頻率與使用的范圍都越來越廣泛,但是人們使用的網(wǎng)絡(luò)的用途主要的還是只有兩個:(1).相互之間的溝通,(2).資源共享。局域網(wǎng)作為網(wǎng)絡(luò)的一個重要組成部分,它不但用戶與外界連接的樞紐,同時也是近距離用戶之間溝通與資源共享的一個重要途徑。在這種情況下,如何使局域網(wǎng)內(nèi)的用戶便捷的勾通,以及快速的資源共享,也就成為了人們對網(wǎng)絡(luò)研究的重點(diǎn)之一。本系統(tǒng)仿飛鴿傳輸,是一個局域網(wǎng)內(nèi)的通迅工具,主要通過Winsockt完成。它據(jù)有的功能有:(1)局域網(wǎng)內(nèi)用戶間簡單的文字聊天功能;(2)局域網(wǎng)內(nèi)用戶間相互的文件、文件夾傳輸。1.2本課題主要研究背景隨著計算機(jī)和通訊技術(shù)的發(fā)展,計算機(jī)的網(wǎng)絡(luò)化已經(jīng)滲透到各個應(yīng)用領(lǐng)域,尤其是以TCP/IP協(xié)議之間的網(wǎng)絡(luò)互連發(fā)展很快,計算機(jī)應(yīng)用系統(tǒng)的開發(fā)由傳統(tǒng)的單機(jī)方式轉(zhuǎn)向到了網(wǎng)絡(luò)環(huán)境的開發(fā)。大部分編程語言都提供了基于WindowsSockets網(wǎng)絡(luò)編程接口的Winsocket控件,它使開發(fā)TCP/IP通訊變得簡單方便。網(wǎng)絡(luò)之間進(jìn)行數(shù)據(jù)通訊時,使用地址來標(biāo)識網(wǎng)絡(luò)中的計算機(jī),有了地址以后,數(shù)據(jù)才會準(zhǔn)確地發(fā)送到地址所指向的計算機(jī)。TCP/IP協(xié)議使用IP地址為網(wǎng)絡(luò)中計算機(jī)的標(biāo)識,而且每臺計算機(jī)的IP地址是唯一的,一般情況下,每臺計算機(jī)運(yùn)行的程序不止一個,因此要在應(yīng)用程序中建立連接的話,還需要一個地址標(biāo)識。在TCP/IP協(xié)議書中使用端口(PORT)作為計算機(jī)上運(yùn)行的應(yīng)用程序的標(biāo)識,因此TCP/IP協(xié)議中一個有效的網(wǎng)絡(luò)地址包括IP地址和端口地址兩個部分。TCP/IP協(xié)議提供了兩種計算機(jī)之間的通訊方式:TCP方式和UDP方式。TCP是一種面向連接的服務(wù),在文件傳輸時會先行建立連接,通過鏈接提供雙向、有序且無重復(fù)的數(shù)據(jù)流服務(wù)、以及流量控制、差錯檢測和糾錯等服務(wù),從而確保文件傳輸?shù)恼_性;UDP則是一種無連接的服務(wù),它在傳輸文件時不會確保傳輸端的文件能夠正確無誤的傳送到接收端,所以當(dāng)使用UDP時,通常要自己作接收確認(rèn)的工作。1.3本課題主要研究思路和方法本系統(tǒng)的開發(fā)采用基于winsocket的廣播發(fā)送模式,進(jìn)行文字聊天和文件、文件夾傳輸?shù)脑O(shè)計與開發(fā)。因此,本設(shè)計首先分析該系統(tǒng)的相關(guān)功能,結(jié)合本設(shè)計的相關(guān)要求寫出需求分析;其次,綜合運(yùn)用以前所學(xué)的相關(guān)知識,選擇所熟悉的開發(fā)工具進(jìn)行本設(shè)計的開發(fā);在設(shè)計中以需求分析為基礎(chǔ),寫出系統(tǒng)開發(fā)計劃、實(shí)現(xiàn)流程及相關(guān)問題的實(shí)現(xiàn)方法;最后,在系統(tǒng)開發(fā)完畢后,進(jìn)行調(diào)試和運(yùn)行,做好調(diào)試和運(yùn)行的相關(guān)記錄。1.4研究項(xiàng)目的目的以及意義隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)給人們帶來了很多便利,比如人們借助于網(wǎng)絡(luò)進(jìn)行相互交流變得更加方便。聊天工具作為互聯(lián)網(wǎng)中運(yùn)用最為廣泛的通信工具之一,如今都已被廣大網(wǎng)民接受。很多人都使用過飛鴿傳書軟件,飛鴿傳書發(fā)展到現(xiàn)在已經(jīng)具有了很多功能:有文字聊天、文件、文件夾傳輸?shù)幕竟δ?,也有密封、加鎖等較為復(fù)雜的功能。本畢業(yè)設(shè)計的目的主要是為了檢查使學(xué)生綜合運(yùn)用以前所學(xué)知識(包括以前所學(xué)的一些關(guān)于網(wǎng)絡(luò)、編程、信息安全等知識)的能力,模擬局域網(wǎng)飛鴿傳書軟件,開發(fā)一個天系統(tǒng)軟件,本畢業(yè)設(shè)計主要實(shí)現(xiàn)局域網(wǎng)內(nèi)文字聊天及文件傳輸?shù)裙δ堋?.5WinSocket的尋址方式因?yàn)閃insock要兼容多個協(xié)議,所以必須使用通用的尋址方式。TCP/IP使用地址和端口號來指定一個地址,但是其它協(xié)議也許采用不同的形式。如果Winsock強(qiáng)迫使用特定的尋址方式,添加其他協(xié)議就不大可能了。在Winsock中,應(yīng)用程序員通過SOCKADDR_IN結(jié)構(gòu)來指定IP地址和端口號。定義如下:Structsockaddr_in{ shortsin_family; u_shortsin_port; structin_addrsin_addr; harsin_zero[8]; };應(yīng)用程序可以使用inet_addr函數(shù)將一個小數(shù)點(diǎn)分隔的十進(jìn)制IP地址字符串轉(zhuǎn)化成由32位二進(jìn)制數(shù)表示的IP地址。inet_ntoa函數(shù)將一個網(wǎng)絡(luò)字節(jié)順序的32位IP地址轉(zhuǎn)化字符串。注意:inet_addr返回的32位二進(jìn)制數(shù)是用網(wǎng)絡(luò)順序存儲的。系統(tǒng)需求分析2.1系統(tǒng)設(shè)計目標(biāo)根據(jù)對飛鴿傳輸系統(tǒng)的調(diào)研,我認(rèn)為本設(shè)計需要滿足以下幾個系統(tǒng)設(shè)計目標(biāo):(1)實(shí)用性原則:真正為局域網(wǎng)的實(shí)際工作服務(wù),按照需求的輕重緩急,合理設(shè)計本系統(tǒng)。(2)可靠性原則:必須為用戶提供安全的服務(wù),尤其是要保證傳輸?shù)姆€(wěn)定性。(3)友好性原則:使用本系統(tǒng)的用戶相當(dāng)一部分對計算機(jī)知識了解很少,所以系統(tǒng)操作上要求簡單方便,便于用戶掌握。(4)可擴(kuò)展性原則:采用開放的標(biāo)準(zhǔn)和接口,便于系統(tǒng)向更大的規(guī)模和功能擴(kuò)展。2.2系統(tǒng)總體需求分析根據(jù)用戶需求,本系統(tǒng)分為兩個子系統(tǒng):1:局域網(wǎng)內(nèi)簡單文字聊天子系統(tǒng),它是在局域網(wǎng)內(nèi)選擇相應(yīng)的用戶,以便對之發(fā)送文字信息,2:文件、文件夾傳輸系統(tǒng),它是在先把需要傳輸?shù)奈募?、文件夾轉(zhuǎn)換成相就的數(shù)據(jù)流傳關(guān),到了目的主機(jī)再由之還原。本系統(tǒng)的文字聊天系統(tǒng)實(shí)現(xiàn)的功能類似于QQ用戶之間的聊天。在設(shè)計系統(tǒng)時,應(yīng)根據(jù)簡潔、流暢的特點(diǎn)安排布局,在編制程序時應(yīng)充分考慮這一點(diǎn)傳輸?shù)姆€(wěn)定、快捷,真正做到“簡潔、高效、流暢、安全”的使用環(huán)境。用戶使用的過程為,先是用戶登開啟本軟件,軟件自動檢索局域網(wǎng)的其它用戶,并以之成為用戶列表,讓用戶選擇。當(dāng)用戶發(fā)現(xiàn)所要連接的用戶之后,雙擊該用戶,則出現(xiàn)發(fā)送窗口。用戶用之來發(fā)送消息或者文件。接收方可以選擇接收或者拒絕相應(yīng)的傳輸文件。2.3組織結(jié)構(gòu)的分析以下為組織結(jié)構(gòu)圖:發(fā)送端發(fā)送端電腦選擇目標(biāo)電腦連接后數(shù)據(jù)轉(zhuǎn)換目標(biāo)主機(jī)數(shù)據(jù)轉(zhuǎn)換目標(biāo)主機(jī)數(shù)據(jù)轉(zhuǎn)換直接傳送直接傳送加密傳送加密傳送圖1組織結(jié)構(gòu)圖2.3.1開發(fā)運(yùn)行環(huán)境開發(fā)此系統(tǒng)所需的基本軟、硬件環(huán)境為:(1).Windows95、Windows98或WindowsNT/2000/XP;(2).Pentium100及以上檔次的IBMPC及其兼容機(jī);(3).128M以上內(nèi)存措施;(4).1G以上可用硬盤空間;(5).VGA顯示器;以上的配置均要求為在同一局域網(wǎng)內(nèi)的兩臺或兩臺以上。2.3.2系統(tǒng)開發(fā)語言本系統(tǒng)采用VC/VC++語言開發(fā)。VC/VC++是前些年迅速發(fā)展和推廣的一種計算機(jī)語言,近年來,已經(jīng)相當(dāng)?shù)耐晟?。它主要特點(diǎn)有兩個方面:一是全面兼容C,二是支持面向?qū)ο虻姆椒ā?理論知識3.1C/S軟件架構(gòu)技術(shù)C/S(Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)/服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用。3.2用戶數(shù)據(jù)報協(xié)議(UDP)UDP(UserDatagramProtocol):用戶數(shù)據(jù)包協(xié)議,它和TCP一樣位于傳輸層,和IP協(xié)議配合使用,在傳輸數(shù)據(jù)時省去包頭,但它不能提供數(shù)據(jù)包的重傳,所以適合傳輸較短的文件。由于大多數(shù)網(wǎng)絡(luò)應(yīng)用程序都在同一臺機(jī)器上運(yùn)行,計算機(jī)上必須能夠確保目的地機(jī)器上的軟件程序能從源地址機(jī)器處獲得數(shù)據(jù)包,以及源計算機(jī)能收到正確的回復(fù)。這是通過使用UDP的“端口號”完成的。源端口號標(biāo)識了請求域名服務(wù)的本地機(jī)的應(yīng)用程序,同時需要將所有由目的站生成的響應(yīng)包都指定到源主機(jī)的這個端口上。與TCP不同,UDP并不提供對IP協(xié)議的可靠機(jī)制、流控制以及錯誤恢復(fù)功能等。由于UDP比較簡單,UDP頭包含很少的字節(jié),比TCP負(fù)載消耗少,所以UDP適用于不需要TCP可靠機(jī)制的情形,比如,當(dāng)高層協(xié)議或應(yīng)用程序提供錯誤和流控制功能的時候。UDP是傳輸層協(xié)議,服務(wù)于很多知名應(yīng)用層協(xié)議,包括網(wǎng)絡(luò)文件系統(tǒng)(NFS)、簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)、域名系統(tǒng)(DNS)以及簡單文件傳輸系統(tǒng)(TFTP)。3.3單播、廣播、組播淺析硬件組播(multicasting)是一種多點(diǎn)投遞的形式,它使用硬件技術(shù),通過使用大量組播地址來通信。當(dāng)某一組機(jī)器需要通信時,選擇一個組播地址,并配置好相應(yīng)的網(wǎng)絡(luò)接口硬件,識別組播地址,從而收到該組播地址上分組的拷貝。廣播(broadcasting)是多點(diǎn)投遞的最普遍的形式,它向每一個目的站投遞一個分組的拷貝。它可以通過多個單次分組的投遞完成,也可以通過單獨(dú)的連接傳遞分組的拷貝,直到每個接收方均收到一個拷貝為止。在多數(shù)網(wǎng)絡(luò)中,用戶是通過把分組分送給一個特殊保留的地址即廣播地址(broadcastaddress)來進(jìn)行廣播投遞,它的主要缺點(diǎn)是會耗費(fèi)大量的主機(jī)資源和網(wǎng)絡(luò)資源。單播(unexacting)是指只有一個目的地的數(shù)據(jù)報傳遞。從投遞目的地的數(shù)量而言,單播和廣播均可看作是組播的一個子集。單播可以看作僅包括一臺機(jī)器群組的組播;廣播可以看作包含了所有機(jī)器群組的組播。但從數(shù)據(jù)報的投遞方式而言,單播、廣播和組播還是有較大的區(qū)別。系統(tǒng)設(shè)計本系統(tǒng)主要分為文字聊天和文件傳書兩大部分。所以本論文將把系統(tǒng)分成兩大模塊來介紹。4.1文字聊天模塊的整體構(gòu)架本系統(tǒng)文字聊天是采用C/S結(jié)構(gòu),所以每個客戶端也是作為服務(wù)器端的,當(dāng)系統(tǒng)發(fā)送信息給局域網(wǎng)的用戶,主要由單播模塊和廣播模塊來實(shí)現(xiàn),而其中的單播模塊和用戶信息模塊是具有依賴性的,在接收信息的時候又有兩個模塊來完成,一是信息接收的模塊,另一個是信息查看的模塊。由此可以看出本模塊主要分為兩模塊:發(fā)送模塊和接收模塊。發(fā)送模塊:單播模塊,廣播模塊,用戶信息模塊,信息記錄模塊接收模塊:接收信息模塊,查看信息模塊綜上所述,系統(tǒng)的架構(gòu)圖為:單播發(fā)送顯示用戶信息系統(tǒng)單播發(fā)送顯示用戶信息系統(tǒng)主界面多播發(fā)送信息寫入多播發(fā)送信息寫入查看信息信息接收查看信息信息接收圖2系統(tǒng)結(jié)構(gòu)圖4.2文件傳輸模塊的主要流程圖由于本模塊采用C/S架構(gòu)故將系統(tǒng)運(yùn)行載體分為兩個部分:客戶端與服務(wù)器端。文件傳輸需要建立有效的連接后,通過TCP/IP協(xié)議實(shí)現(xiàn)點(diǎn)對點(diǎn)的文件傳輸。通信雙方是通過三次握手建立連接,實(shí)現(xiàn)文字、文件傳輸,最后關(guān)閉套節(jié)字連接。其傳輸?shù)恼麄€流程圖如下:服務(wù)器端主機(jī)(tcp/ip)客戶端主機(jī)服務(wù)器端主機(jī)(tcp/ip)客戶端主機(jī)連接響應(yīng)(3次握手)套節(jié)字連接求連接響應(yīng)(3次握手)套節(jié)字連接求接收文件流(sockt流)并保存接收文件流(sockt流)并保存寫入信息流斷開連接響應(yīng)(3次握手)斷開連接斷開連接響應(yīng)(3次握手)斷開連接圖3結(jié)構(gòu)流程圖4.3系統(tǒng)的主要功能模塊4.3.1文字聊天的主登錄界面由于系統(tǒng)的用戶設(shè)計是針對的用戶日?;顒樱菍iT從事計算機(jī)操作的人員,所以本系統(tǒng)力求界面友好、簡單,以便給用戶提供一個舒適的使用環(huán)境。在文字聊天模塊的主要目標(biāo)是簡捷,方便。為了方便用戶選取單個用戶進(jìn)行信息發(fā)送和查看在線用戶的信息,所以設(shè)計了一個ListView來進(jìn)行顯示如圖5,在ListView中包括了用戶名、工作組、用戶級數(shù)等。當(dāng)有用戶打開本系統(tǒng)的時候?qū)蚓钟蚓W(wǎng)中的所有用戶發(fā)送一個握手信息來獲取網(wǎng)絡(luò)中的在線用戶信息并添加到列表中顯示出來,同時也把自己的網(wǎng)絡(luò)資源信息發(fā)送給對方,使自己被添加到其他用戶的列表中。登錄界面,如圖4所示:圖4啟動主界面進(jìn)行發(fā)送的,在發(fā)送時將會把信息發(fā)送給在局域網(wǎng)內(nèi)部的所有用戶包括自己。選擇用戶并輸入發(fā)送信息,單播發(fā)送的按鈕為BitBtn2,主要是通過IdUDPServer和IdUDPClient組件來編寫的,由client.SendBuffer語句來發(fā)送的,主要是對局域網(wǎng)內(nèi)部的同一工作組用戶發(fā)送信息。廣播發(fā)送的按鈕為BitBtn3,主要是通過IdUDPServer和IdUDPClient組件來編寫的,主要是使用了client.Broadcast來對信息,如圖5所示:圖5用戶選擇圖其中主要的代碼為:voidTMsgApp::InitWindow(void){ WNDCLASS wc; HWND hWnd; char class_name[MAX_PATH]=IPMSG_CLASS,*tok,*msg,*p; ULONG nicAddr=0; int port_no=atoi(cmdLine); if(port_no==0) port_no=IPMSG_DEFAULT_PORT; if((tok=strchr(cmdLine,'/'))&&separate_token(tok,'',&p)) { BOOL diag=TRUE; DWORD status=0xffffffff; if(stricmp(tok,"/NIC")==0) //NIC { if(tok=separate_token(NULL,'',&p)) nicAddr=ResolveAddr(tok); } elseif(stricmp(tok,"/MSG")==0) { MsgMng msgMng(nicAddr,port_no); ULONG command=IPMSG_SENDMSG|IPMSG_NOADDLISTOPT|IPMSG_NOLOGOPT,destAddr; while((tok=separate_token(NULL,'',&p))!=NULL&&*tok=='/'){ if(stricmp(tok,"/LOG")==0) command&=~IPMSG_NOLOGOPT; elseif(stricmp(tok,"/SEAL")==0) command=IPMSG_SECRETOPT; } if((msg=separate_token(NULL,0,&p))!=NULL) { diag=FALSE; if((destAddr=ResolveAddr(tok))!=NULL) status=msgMng.Send(destAddr,htons(port_no),command,msg)?0:-1; } } if(nicAddr==0) { if(diag) MessageBox(0,"ipmsg.exe[portno][/MSG[/LOG][/SEAL]<hostnameorIPaddr><message>]\r\nipmsg.exe[portno][/NICnic_addr]",MSG_STR,MB_OK); ::ExitProcess(status); return; } }4.3.2文字聊天信息的封裝封裝是一種把多次聊天的的數(shù)據(jù)捆綁在一起,使這兩者不受外界干擾和誤用的機(jī)制.封裝可被理解為一種用做保護(hù)的包裝器,以防止代碼和數(shù)據(jù)被包裝器外部所定義的其他代碼任意訪問.對包裝器內(nèi)部代碼與數(shù)據(jù)的訪問通過一個明確定義的接口來控制.封裝代碼的好處是每個人都知道怎樣訪問代碼,進(jìn)而無需考慮實(shí)現(xiàn)細(xì)節(jié)就能直接使用它,同時不用擔(dān)心不可預(yù)料的副作用.用戶密封只需選擇seal選項(xiàng),程序插件自動生成封裝功能。并且在聊天過程中,封裝的過程仍在持續(xù),聊天的內(nèi)容是邊封裝數(shù)據(jù)包邊傳輸。密封發(fā)送信息接收界面,如圖6所示圖6接收界面在點(diǎn)擊open后顯示信息。其中實(shí)現(xiàn)的主要代碼為:BOOLTApp::PreProcMsg(MSG*msg) //forTranslateAccel&IsDialogMessage{ for(HWNDhWnd=msg->hwnd;hWnd!=NULL;hWnd=::GetParent(hWnd)) { TWin *win=SearchWnd(hWnd); if(win!=NULL) return win->PreProcMsg(msg); } return FALSE;}LRESULTCALLBACKTApp::WinProc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam){ TWin*win=SearchWnd(hWnd); if(win) return win->WinProc(uMsg,wParam,lParam); if((win=preWnd)!=NULL) { preWnd=NULL; AddWinByWnd(win,hWnd); return win->WinProc(uMsg,wParam,lParam); } return DefWindowProc(hWnd,uMsg,wParam,lParam);}4.3.3聊天信息的加鎖加鎖名如其實(shí),其作用主要在于使傳送的信息或者文件、文件夾只能給有password的用戶看,從而加強(qiáng)了信息的安全程度。在現(xiàn)在這個網(wǎng)絡(luò)黑客泛濫的時代,為了保護(hù)信息的隱私,加鎖就更加必要了。以下為加鎖信息的主要界面。在加鎖后的信息接收界面,如圖7所示:圖7聊天信息加鎖后界面點(diǎn)擊確定后顯示,如圖8所示:圖8開鎖界面其中主要代碼為: BOOLTRegistry::DeleteChildTree(LPSTRsubKey){ char buf[100]; BOOL ret=TRUE; if(subKey!=NULL&&OpenKey(subKey)!=TRUE) return FALSE; while(EnumKey(0,buf,sizeof(buf))) { if((ret=DeleteChildTree(buf))!=TRUE) break; } if(subKey!=NULL) { CloseKey(); ret=DeleteKey(subKey)?ret:FALSE; } else{ while(EnumValue(0,buf,sizeof(buf))) { if(DeleteValue(buf)!=TRUE) { ret=FALSE; break; } } } return ret;}4.3.4文件傳輸?shù)慕缑媾c文字聊天一樣,系統(tǒng)的文件、文件夾傳輸模塊也盡量地要求簡單易行,便于操作。當(dāng)然,作為文件的傳輸,速度和安全也就成為了重要的問題,系統(tǒng)的簡單加鎖能達(dá)到局域網(wǎng)較為單一的環(huán)境要求。文件傳輸?shù)倪^程中流程為首先客端的主機(jī)通過TCP/IP協(xié)議建立鏈接,然后客戶機(jī)發(fā)送套節(jié)字請求,通過3次握手連接響應(yīng),再轉(zhuǎn)換數(shù)據(jù)為socket流傳送,最近通過3次握手?jǐn)嚅_連接響應(yīng)。選擇用戶并拖入相應(yīng)所要傳送的文件及文件夾,如圖9所示:圖9文件傳輸界面點(diǎn)擊所發(fā)送的文件為文件另存為,界面如圖10所示:圖10選擇存儲路徑選擇路徑確定后,文件開始傳輸。其傳送界面,如圖11所示:圖11文件傳輸中實(shí)現(xiàn)的主要代碼為: voidTSendDlg::InitializeHeader(void){ int order[MAX_SENDWIDTH]; int revItems[MAX_SENDWIDTH]; while(maxItems>0) SendDlgItemMessage(HOST_LIST,LVM_DELETECOLUMN,--maxItems,0); ColumnItems=cfg->ColumnItems&~(1<<SW_ABSENCE); memcpy(FullOrder,cfg->SendOrder,sizeof(FullOrder)); for(intcnt=0;cnt<MAX_SENDWIDTH;cnt++){ if(GetItem(ColumnItems,cnt)){ items[maxItems]=cnt; revItems[cnt]=maxItems++; } } int orderCnt=0; for(cnt=0;cnt<MAX_SENDWIDTH;cnt++){ if(GetItem(ColumnItems,FullOrder[cnt])) order[orderCnt++]=revItems[FullOrder[cnt]]; } DWORDdw=::GetWindowLong(GetDlgItem(HOST_LIST),GWL_STYLE)|LVS_SHOWSELALWAYS; ::SetWindowLong(GetDlgItem(HOST_LIST),GWL_STYLE,dw); DWORDstyle=SendDlgItemMessage(HOST_LIST,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0)|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP; if(cfg->GlidLineCheck) style|=LVS_EX_GRIDLINES; else style&=~LVS_EX_GRIDLINES; SendDlgItemMessage(HOST_LIST,LVM_SETEXTENDEDLISTVIEWSTYLE,0,style); staticchar *headerStr[MAX_SENDWIDTH];4.3.5用戶密封或加鎖傳輸文件文件傳輸模塊實(shí)現(xiàn)主要依靠發(fā)送端與接收端建立有效的連接后,客戶端不斷地向SOCKET寫入文件流,服務(wù)器端不斷接受來自客戶端的SOCKET文件流。直到文件傳輸完畢關(guān)閉套節(jié)字連接并釋放空間。密封和加鎖主要是通過程序的插件對所傳送的文件加以密封,加密,以便確保文件的安全性。點(diǎn)擊open(files)按鈕,界面如圖12所示:圖12文件傳輸界面用戶接收到加鎖的文件圖13加鎖信息接收界面其中主要代碼為:BOOLTRegistry::DeleteChildTree(LPSTRsubKey){ char buf[100]; BOOL ret=TRUE; if(subKey!=NULL&&OpenKey(subKey)!=TRUE) return FALSE; while(EnumKey(0,buf,sizeof(buf))) { if((ret=DeleteChildTree(buf))!=TRUE) break; } if(subKey!=NULL) { CloseKey(); ret=DeleteKey(subKey)?ret:FALSE; } else{ while(EnumValue(0,buf,sizeof(buf))) { if(DeleteValue(buf)!=TRUE) { ret=FALSE; break; } } } return ret;}系統(tǒng)測試5.1測試環(huán)境簡單含有兩臺或者兩臺以上主機(jī)的局域網(wǎng)一個,主機(jī)的最低配置:CPUPIII8000,內(nèi)存SDRAM64M,WIN2000/XP/9X,2003下均測試通過.建議用戶CPUPIII,內(nèi)存256M及以上。5.2測試結(jié)果系統(tǒng)在上述軟硬件環(huán)境下對此系統(tǒng)各個子模塊功能作出測試,結(jié)果基本能夠達(dá)到預(yù)期功能。結(jié)論隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)給人們帶來了很多便利,局域網(wǎng)以其快捷的速度、優(yōu)異的準(zhǔn)確率始終在溝通和資源共享方面占有一席之地。局域網(wǎng)內(nèi)的文字聊天以及文件、文件夾的傳輸?shù)墓ぞ咴缫呀?jīng)為人們所創(chuàng)造和使用。主要工作:1.熟悉業(yè)務(wù)流程,進(jìn)一步分析需求。了解程序的業(yè)務(wù)流程和客戶的需求,為分析管理需求打下基礎(chǔ)。2.研究并設(shè)計飛鴿傳書系統(tǒng)的功能組成。它的核心是“聊,傳”,因此確定系統(tǒng)的基本功能就是聊天和文件傳送。3.學(xué)習(xí)借鑒其它優(yōu)秀軟件,取長補(bǔ)短,可以使系統(tǒng)的開發(fā)過程少走彎路。4.收集資料,為系統(tǒng)實(shí)現(xiàn)做準(zhǔn)備。5.設(shè)計完成系統(tǒng)軟件。選擇適當(dāng)?shù)脑O(shè)計軟件,主要得用winsocket控件的主要功能。由于時間比較倉促,個人開發(fā)能力也有限,系統(tǒng)還存在一些其它的技術(shù)性問題,還需在今后的實(shí)踐中不斷總結(jié)和改善,以提高系統(tǒng)技術(shù)含量和研究價值,增強(qiáng)自身開發(fā)能力。參考文獻(xiàn)[1]AndrewS.Tanenbaum.計算機(jī)網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,1998。[2]Anonymous.網(wǎng)絡(luò)最高安全技術(shù)指南[M].北京:機(jī)械工業(yè)出版社,1998。[3]DavidA.Solomon.WindowsNT技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,1999。[4]DouglasE.Comer.TCP/IP網(wǎng)絡(luò)互連技術(shù)[M].北京:清華大學(xué)出版社,1998。[5]DavidJ.Kruglinski.VisualC++技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,1999。[6]梁普選.VisualC++序設(shè)計與實(shí)踐.北京:清華大學(xué)出版社,2005。致謝本文是在劉永紅老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完成本課題起到了極大的作用。在此向他表示我最衷心的感謝!在論文完成過程中,本人還得到了韓斌老師和鄭帥同學(xué)的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝!作者簡介:姓名:張路長性別:男出生年月:1984.3民族:漢E-mail:luchang.zhang@聲明本論文的工作是2007年2月至2007年6月在成都信息工程學(xué)院網(wǎng)絡(luò)工程系完成的。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。關(guān)于學(xué)位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明:本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:(1)學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件與復(fù)印件。(2)學(xué)??梢圆捎糜坝?、縮印或其他復(fù)制方式保存學(xué)位論文。(3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈送和交換學(xué)位論文。(4)學(xué)??稍试S學(xué)位論文被查閱或借閱。(5)學(xué)??梢怨紝W(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學(xué)院。特此聲明!作者簽名:年月日畢業(yè)設(shè)計(論文)局域網(wǎng)飛鴿傳書軟件的設(shè)計與實(shí)現(xiàn)論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位類別:論文提交日期:局域網(wǎng)飛鴿傳書軟件的設(shè)計與實(shí)現(xiàn)摘要網(wǎng)絡(luò)通訊在當(dāng)今已經(jīng)不算新鮮事物,但大多數(shù)網(wǎng)絡(luò)通訊都需要借助Internet上的服務(wù)器,這就給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成了許多問題,如浪費(fèi)網(wǎng)絡(luò)資源、遭遇到網(wǎng)絡(luò)攻擊、傳播的病毒、破壞防御系統(tǒng)等等。由于互連網(wǎng)上的網(wǎng)絡(luò)通訊工具給企業(yè)內(nèi)部信息交流帶來了不便,所以為了方便內(nèi)部網(wǎng)絡(luò)的用戶之間的溝通,需要開發(fā)一個基于局域網(wǎng)的信息收發(fā)系統(tǒng)的即時通訊工具,實(shí)現(xiàn)在內(nèi)部網(wǎng)絡(luò)中進(jìn)行信息的交流。本課題設(shè)計主要針對局域網(wǎng)通訊而開發(fā)設(shè)計的,采用的是C/S構(gòu)架,類似飛鴿傳書系統(tǒng),來實(shí)現(xiàn)聊天、文件傳輸功能,并借助一些網(wǎng)絡(luò)通訊組件,成功的實(shí)現(xiàn)了在局域網(wǎng)上的即時通訊。本論文的目標(biāo)是設(shè)計一個類似飛鴿傳輸?shù)木钟蚓W(wǎng)通信軟件,并分析它在其領(lǐng)域的優(yōu)勢。本設(shè)計以C編寫,能在windows2000/net/xp等環(huán)境下運(yùn)行。設(shè)計共分為五大模塊,分別是:首先,介紹選題背景及意義和國內(nèi)外研究現(xiàn)狀;其次,介紹TCP/IP點(diǎn)對點(diǎn)協(xié)議技術(shù),C/S架構(gòu)和SOCKET網(wǎng)絡(luò)編程技術(shù);再次,對當(dāng)前局域網(wǎng)文件傳輸進(jìn)行需求分析并提出解決方案;然后,根據(jù)解決方案對系統(tǒng)進(jìn)行設(shè)計;最后,對工作計劃統(tǒng)計以及分析系統(tǒng)進(jìn)行測試并得到測試結(jié)果。關(guān)鍵詞:聊天;傳輸;socket;飛鴿傳書;C/S結(jié)構(gòu)DesignandImplementationIPMessengerBasedonLANAbstractThenetworkcommunicationalreadydonotcalculatethenewthingsnow,butthemajoritynetworkcommunicationallneedtobesupportbytheserverontheInternet,thismaketheseuserhavethelarge-scaleinternalnetworkwhomanyproblems,suchaswastenetworkresources,beattackedbynetwork,disseminationvirus,destructiondefensesystemandsoon.Becausetheinterconnectionnetworkcommunicationfacilitiesontheinteriorcommunicationbroughtinconvenientlyfortheenterprise,inordertofacilitateinternalcommunicationbetweennetworkuser's,needstodeveloponebasedonthelocalofinstantmessageareanetworkinformationreceivinganddispatchingsysteminstantmessagefacilities,realizescarriesontheinformationwhichnetworktheexchange.Thistopicdesignmainlyaimsatthelocalareanetworkcommunicationtodevelopthedesign,usesistheC/Sskeleton,likeIPMessenger,forchatandfilestransmission.LANagainstthetextchat,documentsandfolderstransmission,thedesignofafakeIPMessengerofLANsoftware,andanalyzeitintheirareasofadvantage.ThedesignisdevelopedbyCprogramitcanmakeinthecnvironmentofwindows2000/net/xpoftopicselection,intheenvironmentThedesignaltogetherdividesintofivebigmodules,respectivelyis:First,introductionselectedtopicbackgroundandsignificanceanddomesticandforeignresearchpresentsituation;Second,introducestheTCP/IPpointtopointprotocoltechnology;C/Sconstructiontechniqueandsocktnetworkprogrammingtechnology;Third,carriesonthedemandofthecurrentlocalareanetworkfiletransfertoanalyzeandproposethesolution;Fourth,carriesonthedesignaccordingtothesolutiontothesystem;Fifth,statistictheworkplan,awalysandtestthesystemandobtainsthetestnesult.Keywords:Chat;transmission;socket;C/Sskeleton;IPMessenger目錄論文總頁數(shù):20頁TOC\o"1-4"\h\z\u1 引言 11.1課題背景 11.2本課題主要研究背景 11.3本課題主要研究思路和方法 11.4研究項(xiàng)目的目的以及意義 21.5WINSOCKET的尋址方式 22 系統(tǒng)需求分析 22.1系統(tǒng)設(shè)計目標(biāo) 22.2系統(tǒng)總體需求分析 32.3組織結(jié)構(gòu)的分析 32.3.1開發(fā)運(yùn)行環(huán)境 32.3.2系統(tǒng)開發(fā)語言 43 理論知識 43.1C/S軟件架構(gòu)技術(shù) 43.2用戶數(shù)據(jù)報協(xié)議(UDP) 43.3單播、廣播、組播淺析 54 系統(tǒng)設(shè)計 54.1文字聊天模塊的整體構(gòu)架 54.2文件傳輸模塊的主要流程圖 64.3系統(tǒng)的主要功能模塊 64.3.1文字聊天的主登錄界面 64.3.2文字聊天信息的封裝 94.3.3聊天信息的加鎖 104.3.4文件傳輸?shù)慕缑?124.3.5用戶密封或加鎖傳輸文件 155 系統(tǒng)測試 175.1測試環(huán)境 175.2測試結(jié)果 17結(jié)論 17參考文獻(xiàn) 18致謝 19聲明 20引言1.1課題背景當(dāng)時間走向21世紀(jì),當(dāng)今時代也由工業(yè)經(jīng)濟(jì)漸漸成為了知識經(jīng)濟(jì)、信息經(jīng)濟(jì)的時代。信息的需求量的不停增加,促使了計算機(jī)通信的日新月異!雖然網(wǎng)絡(luò)的使用頻率與使用的范圍都越來越廣泛,但是人們使用的網(wǎng)絡(luò)的用途主要的還是只有兩個:(1).相互之間的溝通,(2).資源共享。局域網(wǎng)作為網(wǎng)絡(luò)的一個重要組成部分,它不但用戶與外界連接的樞紐,同時也是近距離用戶之間溝通與資源共享的一個重要途徑。在這種情況下,如何使局域網(wǎng)內(nèi)的用戶便捷的勾通,以及快速的資源共享,也就成為了人們對網(wǎng)絡(luò)研究的重點(diǎn)之一。本系統(tǒng)仿飛鴿傳輸,是一個局域網(wǎng)內(nèi)的通迅工具,主要通過Winsockt完成。它據(jù)有的功能有:(1)局域網(wǎng)內(nèi)用戶間簡單的文字聊天功能;(2)局域網(wǎng)內(nèi)用戶間相互的文件、文件夾傳輸。1.2本課題主要研究背景隨著計算機(jī)和通訊技術(shù)的發(fā)展,計算機(jī)的網(wǎng)絡(luò)化已經(jīng)滲透到各個應(yīng)用領(lǐng)域,尤其是以TCP/IP協(xié)議之間的網(wǎng)絡(luò)互連發(fā)展很快,計算機(jī)應(yīng)用系統(tǒng)的開發(fā)由傳統(tǒng)的單機(jī)方式轉(zhuǎn)向到了網(wǎng)絡(luò)環(huán)境的開發(fā)。大部分編程語言都提供了基于WindowsSockets網(wǎng)絡(luò)編程接口的Winsocket控件,它使開發(fā)TCP/IP通訊變得簡單方便。網(wǎng)絡(luò)之間進(jìn)行數(shù)據(jù)通訊時,使用地址來標(biāo)識網(wǎng)絡(luò)中的計算機(jī),有了地址以后,數(shù)據(jù)才會準(zhǔn)確地發(fā)送到地址所指向的計算機(jī)。TCP/IP協(xié)議使用IP地址為網(wǎng)絡(luò)中計算機(jī)的標(biāo)識,而且每臺計算機(jī)的IP地址是唯一的,一般情況下,每臺計算機(jī)運(yùn)行的程序不止一個,因此要在應(yīng)用程序中建立連接的話,還需要一個地址標(biāo)識。在TCP/IP協(xié)議書中使用端口(PORT)作為計算機(jī)上運(yùn)行的應(yīng)用程序的標(biāo)識,因此TCP/IP協(xié)議中一個有效的網(wǎng)絡(luò)地址包括IP地址和端口地址兩個部分。TCP/IP協(xié)議提供了兩種計算機(jī)之間的通訊方式:TCP方式和UDP方式。TCP是一種面向連接的服務(wù),在文件傳輸時會先行建立連接,通過鏈接提供雙向、有序且無重復(fù)的數(shù)據(jù)流服務(wù)、以及流量控制、差錯檢測和糾錯等服務(wù),從而確保文件傳輸?shù)恼_性;UDP則是一種無連接的服務(wù),它在傳輸文件時不會確保傳輸端的文件能夠正確無誤的傳送到接收端,所以當(dāng)使用UDP時,通常要自己作接收確認(rèn)的工作。1.3本課題主要研究思路和方法本系統(tǒng)的開發(fā)采用基于winsocket的廣播發(fā)送模式,進(jìn)行文字聊天和文件、文件夾傳輸?shù)脑O(shè)計與開發(fā)。因此,本設(shè)計首先分析該系統(tǒng)的相關(guān)功能,結(jié)合本設(shè)計的相關(guān)要求寫出需求分析;其次,綜合運(yùn)用以前所學(xué)的相關(guān)知識,選擇所熟悉的開發(fā)工具進(jìn)行本設(shè)計的開發(fā);在設(shè)計中以需求分析為基礎(chǔ),寫出系統(tǒng)開發(fā)計劃、實(shí)現(xiàn)流程及相關(guān)問題的實(shí)現(xiàn)方法;最后,在系統(tǒng)開發(fā)完畢后,進(jìn)行調(diào)試和運(yùn)行,做好調(diào)試和運(yùn)行的相關(guān)記錄。1.4研究項(xiàng)目的目的以及意義隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)給人們帶來了很多便利,比如人們借助于網(wǎng)絡(luò)進(jìn)行相互交流變得更加方便。聊天工具作為互聯(lián)網(wǎng)中運(yùn)用最為廣泛的通信工具之一,如今都已被廣大網(wǎng)民接受。很多人都使用過飛鴿傳書軟件,飛鴿傳書發(fā)展到現(xiàn)在已經(jīng)具有了很多功能:有文字聊天、文件、文件夾傳輸?shù)幕竟δ埽灿忻芊?、加鎖等較為復(fù)雜的功能。本畢業(yè)設(shè)計的目的主要是為了檢查使學(xué)生綜合運(yùn)用以前所學(xué)知識(包括以前所學(xué)的一些關(guān)于網(wǎng)絡(luò)、編程、信息安全等知識)的能力,模擬局域網(wǎng)飛鴿傳書軟件,開發(fā)一個天系統(tǒng)軟件,本畢業(yè)設(shè)計主要實(shí)現(xiàn)局域網(wǎng)內(nèi)文字聊天及文件傳輸?shù)裙δ堋?.5WinSocket的尋址方式因?yàn)閃insock要兼容多個協(xié)議,所以必須使用通用的尋址方式。TCP/IP使用地址和端口號來指定一個地址,但是其它協(xié)議也許采用不同的形式。如果Winsock強(qiáng)迫使用特定的尋址方式,添加其他協(xié)議就不大可能了。在Winsock中,應(yīng)用程序員通過SOCKADDR_IN結(jié)構(gòu)來指定IP地址和端口號。定義如下:Structsockaddr_in{ shortsin_family; u_shortsin_port; structin_addrsin_addr; harsin_zero[8]; };應(yīng)用程序可以使用inet_addr函數(shù)將一個小數(shù)點(diǎn)分隔的十進(jìn)制IP地址字符串轉(zhuǎn)化成由32位二進(jìn)制數(shù)表示的IP地址。inet_ntoa函數(shù)將一個網(wǎng)絡(luò)字節(jié)順序的32位IP地址轉(zhuǎn)化字符串。注意:inet_addr返回的32位二進(jìn)制數(shù)是用網(wǎng)絡(luò)順序存儲的。系統(tǒng)需求分析2.1系統(tǒng)設(shè)計目標(biāo)根據(jù)對飛鴿傳輸系統(tǒng)的調(diào)研,我認(rèn)為本設(shè)計需要滿足以下幾個系統(tǒng)設(shè)計目標(biāo):(1)實(shí)用性原則:真正為局域網(wǎng)的實(shí)際工作服務(wù),按照需求的輕重緩急,合理設(shè)計本系統(tǒng)。(2)可靠性原則:必須為用戶提供安全的服務(wù),尤其是要保證傳輸?shù)姆€(wěn)定性。(3)友好性原則:使用本系統(tǒng)的用戶相當(dāng)一部分對計算機(jī)知識了解很少,所以系統(tǒng)操作上要求簡單方便,便于用戶掌握。(4)可擴(kuò)展性原則:采用開放的標(biāo)準(zhǔn)和接口,便于系統(tǒng)向更大的規(guī)模和功能擴(kuò)展。2.2系統(tǒng)總體需求分析根據(jù)用戶需求,本系統(tǒng)分為兩個子系統(tǒng):1:局域網(wǎng)內(nèi)簡單文字聊天子系統(tǒng),它是在局域網(wǎng)內(nèi)選擇相應(yīng)的用戶,以便對之發(fā)送文字信息,2:文件、文件夾傳輸系統(tǒng),它是在先把需要傳輸?shù)奈募?、文件夾轉(zhuǎn)換成相就的數(shù)據(jù)流傳關(guān),到了目的主機(jī)再由之還原。本系統(tǒng)的文字聊天系統(tǒng)實(shí)現(xiàn)的功能類似于QQ用戶之間的聊天。在設(shè)計系統(tǒng)時,應(yīng)根據(jù)簡潔、流暢的特點(diǎn)安排布局,在編制程序時應(yīng)充分考慮這一點(diǎn)傳輸?shù)姆€(wěn)定、快捷,真正做到“簡潔、高效、流暢、安全”的使用環(huán)境。用戶使用的過程為,先是用戶登開啟本軟件,軟件自動檢索局域網(wǎng)的其它用戶,并以之成為用戶列表,讓用戶選擇。當(dāng)用戶發(fā)現(xiàn)所要連接的用戶之后,雙擊該用戶,則出現(xiàn)發(fā)送窗口。用戶用之來發(fā)送消息或者文件。接收方可以選擇接收或者拒絕相應(yīng)的傳輸文件。2.3組織結(jié)構(gòu)的分析以下為組織結(jié)構(gòu)圖:發(fā)送端發(fā)送端電腦選擇目標(biāo)電腦連接后數(shù)據(jù)轉(zhuǎn)換目標(biāo)主機(jī)數(shù)據(jù)轉(zhuǎn)換目標(biāo)主機(jī)數(shù)據(jù)轉(zhuǎn)換直接傳送直接傳送加密傳送加密傳送圖1組織結(jié)構(gòu)圖2.3.1開發(fā)運(yùn)行環(huán)境開發(fā)此系統(tǒng)所需的基本軟、硬件環(huán)境為:(1).Windows95、Windows98或WindowsNT/2000/XP;(2).Pentium100及以上檔次的IBMPC及其兼容機(jī);(3).128M以上內(nèi)存措施;(4).1G以上可用硬盤空間;(5).VGA顯示器;以上的配置均要求為在同一局域網(wǎng)內(nèi)的兩臺或兩臺以上。2.3.2系統(tǒng)開發(fā)語言本系統(tǒng)采用VC/VC++語言開發(fā)。VC/VC++是前些年迅速發(fā)展和推廣的一種計算機(jī)語言,近年來,已經(jīng)相當(dāng)?shù)耐晟?。它主要特點(diǎn)有兩個方面:一是全面兼容C,二是支持面向?qū)ο虻姆椒ā?理論知識3.1C/S(Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)/服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用。3.2用戶數(shù)據(jù)報協(xié)議(UDP)UDP(UserDatagramProtocol):用戶數(shù)據(jù)包協(xié)議,它和TCP一樣位于傳輸層,和IP協(xié)議配合使用,在傳輸數(shù)據(jù)時省去包頭,但它不能提供數(shù)據(jù)包的重傳,所以適合傳輸較短的文件。由于大多數(shù)網(wǎng)絡(luò)應(yīng)用程序都在同一臺機(jī)器上運(yùn)行,計算機(jī)上必須能夠確保目的地機(jī)器上的軟件程序能從源地址機(jī)器處獲得數(shù)據(jù)包,以及源計算機(jī)能收到正確的回復(fù)。這是通過使用UDP的“端口號”完成的。源端口號標(biāo)識了請求域名服務(wù)的本地機(jī)的應(yīng)用程序,同時需要將所有由目的站生成的響應(yīng)包都指定到源主機(jī)的這個端口上。與TCP不同,UDP并不提供對IP協(xié)議的可靠機(jī)制、流控制以及錯誤恢復(fù)功能等。由于UDP比較簡單,UDP頭包含很少的字節(jié),比TCP負(fù)載消耗少,所以UDP適用于不需要TCP可靠機(jī)制的情形,比如,當(dāng)高層協(xié)議或應(yīng)用程序提供錯誤和流控制功能的時候。UDP是傳輸層協(xié)議,服務(wù)于很多知名應(yīng)用層協(xié)議,包括網(wǎng)絡(luò)文件系統(tǒng)(NFS)、簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)、域名系統(tǒng)(DNS)以及簡單文件傳輸系統(tǒng)(TFTP)。3.3單播、廣播、組播淺析硬件組播(multicasting)是一種多點(diǎn)投遞的形式,它使用硬件技術(shù),通過使用大量組播地址來通信。當(dāng)某一組機(jī)器需要通信時,選擇一個組播地址,并配置好相應(yīng)的網(wǎng)絡(luò)接口硬件,識別組播地址,從而收到該組播地址上分組的拷貝。廣播(broadcasting)是多點(diǎn)投遞的最普遍的形式,它向每一個目的站投遞一個分組的拷貝。它可以通過多個單次分組的投遞完成,也可以通過單獨(dú)的連接傳遞分組的拷貝,直到每個接收方均收到一個拷貝為止。在多數(shù)網(wǎng)絡(luò)中,用戶是通過把分組分送給一個特殊保留的地址即廣播地址(broadcastaddress)來進(jìn)行廣播投遞,它的主要缺點(diǎn)是會耗費(fèi)大量的主機(jī)資源和網(wǎng)絡(luò)資源。單播(unexacting)是指只有一個目的地的數(shù)據(jù)報傳遞。從投遞目的地的數(shù)量而言,單播和廣播均可看作是組播的一個子集。單播可以看作僅包括一臺機(jī)器群組的組播;廣播可以看作包含了所有機(jī)器群組的組播。但從數(shù)據(jù)報的投遞方式而言,單播、廣播和組播還是有較大的區(qū)別。系統(tǒng)設(shè)計本系統(tǒng)主要分為文字聊天和文件傳書兩大部分。所以本論文將把系統(tǒng)分成兩大模塊來介紹。4.1文字聊天模塊的整體構(gòu)架本系統(tǒng)文字聊天是采用C/S結(jié)構(gòu),所以每個客戶端也是作為服務(wù)器端的,當(dāng)系統(tǒng)發(fā)送信息給局域網(wǎng)的用戶,主要由單播模塊和廣播模塊來實(shí)現(xiàn),而其中的單播模塊和用戶信息模塊是具有依賴性的,在接收信息的時候又有兩個模塊來完成,一是信息接收的模塊,另一個是信息查看的模塊。由此可以看出本模塊主要分為兩模塊:發(fā)送模塊和接收模塊。發(fā)送模塊:單播模塊,廣播模塊,用戶信息模塊,信息記錄模塊接收模塊:接收信息模塊,查看信息模塊綜上所述,系統(tǒng)的架構(gòu)圖為:單播發(fā)送顯示用戶信息系統(tǒng)單播發(fā)送顯示用戶信息系統(tǒng)主界面多播發(fā)送信息寫入多播發(fā)送信息寫入查看信息信息接收查看信息信息接收圖2系統(tǒng)結(jié)構(gòu)圖4.2文件傳輸模塊的主要流程圖由于本模塊采用C/S架構(gòu)故將系統(tǒng)運(yùn)行載體分為兩個部分:客戶端與服務(wù)器端。文件傳輸需要建立有效的連接后,通過TCP/IP協(xié)議實(shí)現(xiàn)點(diǎn)對點(diǎn)的文件傳輸。通信雙方是通過三次握手建立連接,實(shí)現(xiàn)文字、文件傳輸,最后關(guān)閉套節(jié)字連接。其傳輸?shù)恼麄€流程圖如下:服務(wù)器端主機(jī)(tcp/ip)客戶端主機(jī)服務(wù)器端主機(jī)(tcp/ip)客戶端主機(jī)連接響應(yīng)(3次握手)套節(jié)字連接求連接響應(yīng)(3次握手)套節(jié)字連接求接收文件流(sockt流)并保存接收文件流(sockt流)并保存寫入信息流斷開連接響應(yīng)(3次握手)斷開連接斷開連接響應(yīng)(3次握手)斷開連接圖3結(jié)構(gòu)流程圖4.3系統(tǒng)的主要功能模塊4.3.1文字聊天的主登錄界面由于系統(tǒng)的用戶設(shè)計是針對的用戶日常活動,而非專門從事計算機(jī)操作的人員,所以本系統(tǒng)力求界面友好、簡單,以便給用戶提供一個舒適的使用環(huán)境。在文字聊天模塊的主要目標(biāo)是簡捷,方便。為了方便用戶選取單個用戶進(jìn)行信息發(fā)送和查看在線用戶的信息,所以設(shè)計了一個ListView來進(jìn)行顯示如圖5,在ListView中包括了用戶名、工作組、用戶級數(shù)等。當(dāng)有用戶打開本系統(tǒng)的時候?qū)蚓钟蚓W(wǎng)中的所有用戶發(fā)送一個握手信息來獲取網(wǎng)絡(luò)中的在線用戶信息并添加到列表中顯示出來,同時也把自己的網(wǎng)絡(luò)資源信息發(fā)送給對方,使自己被添加到其他用戶的列表中。登錄界面,如圖4所示:圖4啟動主界面進(jìn)行發(fā)送的,在發(fā)送時將會把信息發(fā)送給在局域網(wǎng)內(nèi)部的所有用戶包括自己。選擇用戶并輸入發(fā)送信息,單播發(fā)送的按鈕為BitBtn2,主要是通過IdUDPServer和IdUDPClient組件來編寫的,由client.SendBuffer語句來發(fā)送的,主要是對局域網(wǎng)內(nèi)部的同一工作組用戶發(fā)送信息。廣播發(fā)送的按鈕為BitBtn3,主要是通過IdUDPServer和IdUDPClient組件來編寫的,主要是使用了client.Broadcast來對信息,如圖5所示:圖5用戶選擇圖其中主要的代碼為:voidTMsgApp::InitWindow(void){ WNDCLASS wc; HWND hWnd; char class_name[MAX_PATH]=IPMSG_CLASS,*tok,*msg,*p; ULONG nicAddr=0; int port_no=atoi(cmdLine); if(port_no==0) port_no=IPMSG_DEFAULT_PORT; if((tok=strchr(cmdLine,'/'))&&separate_token(tok,'',&p)) { BOOL diag=TRUE; DWORD status=0xffffffff; if(stricmp(tok,"/NIC")==0) //NIC { if(tok=separate_token(NULL,'',&p)) nicAddr=ResolveAddr(tok); } elseif(stricmp(tok,"/MSG")==0) { MsgMng msgMng(nicAddr,port_no); ULONG command=IPMSG_SENDMSG|IPMSG_NOADDLISTOPT|IPMSG_NOLOGOPT,destAddr; while((tok=separate_token(NULL,'',&p))!=NULL&&*tok=='/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賽狐公司銷售考核的制度
- 財務(wù)專員制度
- 2025年商城縣人事考試及答案
- 2025年事業(yè)單位7月9日考試及答案
- 2025年毓璜頂自主筆試及答案
- 2025年ic帝國ai4health筆試及答案
- 2025年青島幼兒園財會筆試及答案
- 2025年衛(wèi)健委事業(yè)編考試筆試及答案
- 2025年開陽事業(yè)單位年考試真題及答案
- 2025年東莞物流文員招聘筆試題及答案
- 舞臺音響燈光工程投標(biāo)書范本
- DZ∕T 0064.49-2021 地下水質(zhì)分析方法 第49部分:碳酸根、重碳酸根和氫氧根離子的測定 滴定法(正式版)
- 貨物供應(yīng)方案及運(yùn)輸方案
- 幼兒語言表達(dá)能力提高策略
- 農(nóng)業(yè)技術(shù)推廣指導(dǎo)-農(nóng)業(yè)推廣的概念與基本原理
- 一種拖曳浮標(biāo)三維軌跡協(xié)調(diào)控制方法
- 墓碑上的100個藥方
- TCSAE 153-2020 汽車高寒地區(qū)環(huán)境適應(yīng)性試驗(yàn)方法
- 4D廚房設(shè)備設(shè)施管理責(zé)任卡
- 人教版七年級下冊數(shù)學(xué) 平行線的性質(zhì) 同步練習(xí)(無答案)
- JJG 195-2019連續(xù)累計自動衡器(皮帶秤)
評論
0/150
提交評論