基于VB的即時通信系統(tǒng)畢業(yè)設(shè)計_第1頁
基于VB的即時通信系統(tǒng)畢業(yè)設(shè)計_第2頁
基于VB的即時通信系統(tǒng)畢業(yè)設(shè)計_第3頁
基于VB的即時通信系統(tǒng)畢業(yè)設(shè)計_第4頁
基于VB的即時通信系統(tǒng)畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

浙江科技學院信息與電子工程學院2007屆本科畢業(yè)設(shè)計(論文)-PAGEIV-摘要即時通訊(InstantMessaging)是目前Internet上最為流行的通訊方式,而各種各樣的即時通訊軟件也層出不窮;服務(wù)提供商也提供了越來越豐富的通訊服務(wù)功能。隨著互聯(lián)網(wǎng)的發(fā)展,即時通訊的運用將日益廣泛。本文圍繞即時通訊的基本文字交流功能,設(shè)計了管理在線用戶,維護在線用戶,實現(xiàn)文字通信的功能。本系統(tǒng)使用TCP和UDP協(xié)議作為傳輸層的協(xié)議,更加便捷了用戶之間的通訊和交友。該系統(tǒng)為用戶提供了一個集文字通信、在線信息、文件傳輸于一體的即時通信平臺。經(jīng)過幾個月的項目開發(fā)、測試,本即時通訊系統(tǒng)現(xiàn)已可以正常運行。關(guān)鍵詞:TCP/IP,C/S,Winsock,即時通信系統(tǒng),VisualBasicABSTRACTInstantMessagingiscurrentlythemostpopularwaytocommunicateontheInternet,bythewayvariousInstantMessagingsoftwarehavebeencontinuouslyappearing;Serviceprovideroffersmoreandmorecommunicationservicesnowadays.AsthedevelopmentoftheInternet,InstantMessagingwillperformawideruseandisgrowingupdayafterday.Thisthesisisbasedonthefunctionofexchange,whichisthebasiccharacterofinstantmessagingsystem,onlineusersmanagement,safeguardingonlineusersandexchangemessagearecometrue.Thissystemhasofferedaninstantmessagingplatformincorporatingcharacterscommunication,onlineinformationandfiletransfer.Throughseveralmonthsdevelopandtestcycle,thisinstantmessagingsystemcanalreadyusedtorunnow.Keywords:TCP/IP,C/S,Winsock,InstantMessengerSystem,VisualBasic

目錄摘要 IABSTRACT II第1章緒論 11.1研究背景及意義 11.2網(wǎng)絡(luò)即時通信軟件的現(xiàn)狀 21.3本文的內(nèi)容安排 3第2章實現(xiàn)網(wǎng)絡(luò)即時通信軟件的相關(guān)知識 52.1Winsock的原理 52.2TCP/IP協(xié)議的原理 62.3C/S結(jié)構(gòu)的概述 72.4基于Socket通信的基本應用模式 82.5設(shè)計工具VisualBasic介紹 92.6本章小結(jié) 10第3章網(wǎng)絡(luò)即時通信軟件的設(shè)計 113.1即時通信系統(tǒng)的需求分析 113.1.1基本需求 113.1.2協(xié)議需求 113.1.3安全需求 113.1.4系統(tǒng)需求 123.2界面設(shè)計 123.3系統(tǒng)設(shè)計和功能的實現(xiàn) 143.3.1各模塊的邏輯分析及設(shè)計 143.3.2系統(tǒng)代碼的編寫和功能的實現(xiàn) 193.3.3與服務(wù)器之間的通信 253.4本章小結(jié) 26第4章結(jié)論 274.1完成的工作 274.2存在的問題和未來的展望 274.2.1存在的問題 274.2.2未來的展望 27致謝 29參考文獻 30附錄1程序運行實例 31-PAGE39-第1章緒論網(wǎng)絡(luò)通信是指兩臺或多臺計算機相連接,通過網(wǎng)絡(luò)協(xié)議實現(xiàn)互相通信、共享資源??蛻魴C/服務(wù)器結(jié)構(gòu)是目前最為流行的網(wǎng)絡(luò)通信模式,當兩臺計算機建立連接時,服務(wù)器是運行在一方計算機上的應用程序,也稱為宿主機,與其他計算機連接的服務(wù),并為被連接的計算機提供數(shù)據(jù);客戶機是運行在另一方計算機上的應用程序,它請求與服務(wù)器連接。通常一臺服務(wù)器可連接多臺客戶機。網(wǎng)絡(luò)通信能使多臺計算機間數(shù)據(jù)的傳送變得便利、快捷,不再受到距離的限制。網(wǎng)絡(luò)即時通信也應運而生。網(wǎng)絡(luò)即時通信軟件不僅能實現(xiàn)計算機之間數(shù)據(jù)的傳輸,而且可以實現(xiàn)計算機之間實時的文字、語音對話和圖像、文件的傳輸。隨著即時通信軟件的發(fā)展和成熟,它的易用性和實用性也漸漸被廣大的用戶接受。1.1研究背景及意義互聯(lián)網(wǎng)誕生于傳統(tǒng)的電話網(wǎng)絡(luò),通訊交流可以說是互聯(lián)網(wǎng)天然的應用之一。電子郵件就是最重要的通訊交流工具,是互聯(lián)網(wǎng)最早的“殺手級應用”。此后興起的網(wǎng)絡(luò)論壇和網(wǎng)絡(luò)聊天室都是網(wǎng)絡(luò)聊天的前身。但是,個人對個人網(wǎng)絡(luò)聊天的真正崛起還是需要從ICQ開始。國內(nèi)來看,從2004年以來,即時通信成為互聯(lián)網(wǎng)和電信行業(yè)最激動人心的熱點。2004年6月,行業(yè)的主導服務(wù)商騰訊在香港成功上市。7月,網(wǎng)易在北京推出了新版的即時通訊軟件網(wǎng)易泡泡2004,新浪斥資近兩億元收購UC即時通訊技術(shù)平臺,搜狐也在年初推出即時通訊軟件“搜Q”。作為電信運營商的中國電信和中國網(wǎng)通也動作頻頻。在國外,互聯(lián)網(wǎng)行業(yè)引人矚目的新星GOOGLE也在近幾年推出自己的即時通信GoogleTalk,全球即時通信行業(yè)的老大ICQ也計劃進入中國市場,一時間眾者云集,讓業(yè)界眼花繚亂。[2]即時通信系統(tǒng)是一種在后PC時代興起的,以Internet網(wǎng)絡(luò)為基礎(chǔ)的,允許交互雙方即時地傳送文字、語音、視頻等信息,能夠跟蹤網(wǎng)絡(luò)用戶在線狀態(tài)的網(wǎng)絡(luò)應用軟件。即時通信系統(tǒng)產(chǎn)生有著深刻的社會原因:人們都有渴望社交,獲得社會尊重、實現(xiàn)自我的需求,這正是即時通信軟件風行的原動力,而物質(zhì)文明的日益發(fā)達所帶來副作用,又使得人們習慣與周圍的人保持距離,以致人們更愿意對陌生人敞開心扉,在網(wǎng)絡(luò)中可以跨越年齡、身份、行業(yè)、地域的限制,達到人與人、人與信息之間的零距離交流。從這點上講,即時通信系統(tǒng)的出現(xiàn)改變了人們的溝通方式和交友文化,大大拓展了個人生活交流的空間。1.2網(wǎng)絡(luò)即時通信軟件的現(xiàn)狀經(jīng)過近年來的不斷發(fā)展,目前的IM軟件不再局限于簡單的通信功能,而是捆綁或拓展了越來越多的功能。從理論上講,凡是互聯(lián)網(wǎng)上成功的應用均可被IM軟件一網(wǎng)打盡,目前比較通行的捆綁功能有瀏覽器、郵件、網(wǎng)絡(luò)硬盤、搜索引擎、媒體播放器、RSS/網(wǎng)絡(luò)日志等。基于IM軟件強大的功能,IM運營商可以開展多種業(yè)務(wù),比較典型的有通信類業(yè)務(wù)、娛樂性業(yè)務(wù)、商務(wù)性業(yè)務(wù)、廣告業(yè)務(wù)、在線市場調(diào)查業(yè)務(wù)等等(見圖1-1)。圖1-1IM軟件的功能及IM運營商對用戶提供的業(yè)務(wù)不難看出,個人用戶占據(jù)市場主體,企業(yè)用戶潛力巨大,服務(wù)商勢必在這個領(lǐng)域展開全新的爭奪。圖1-22005年中國即時通信市場個人及企業(yè)用戶份額2005年中國互聯(lián)網(wǎng)用戶首次超過一億人,達到10300萬人。個人即時通信用戶(不包括重復用戶)也達到了8500萬人,比2004年同期提高35.6%。2004年中國即時傳輸總產(chǎn)值是13.8億元,占整個互聯(lián)網(wǎng)產(chǎn)業(yè)的4.5%。2005年到達19.1億元,比同期增長了38.4%,占整個互聯(lián)網(wǎng)產(chǎn)業(yè)的4.6%。預計到2008年這一數(shù)字將達到40.4億元。圖1-32005-2008年即時通信傳輸市場規(guī)模1.3本文的內(nèi)容安排本文的內(nèi)容安排如下:第1章對流行的IM軟件進行了追蹤與分析,通過對目前一些通訊軟件的現(xiàn)狀分析,闡述了開發(fā)即時通訊軟件的必要性和可行性;第2章對開發(fā)軟件的技術(shù)基礎(chǔ)進行了概述,主要圍繞實現(xiàn)軟件所需的系統(tǒng)結(jié)構(gòu)、平臺選取、以及一些技術(shù)方面的基本概念和基本思想;第3章介紹了軟件(客戶端)設(shè)計思路和概要設(shè)計,從總體上介紹軟件的設(shè)計要求和軟件實現(xiàn)的一些功能;第4章對整個軟件設(shè)計進行了總結(jié),并對軟件存在的一些問題和未來發(fā)展提出了一些展望。第2章實現(xiàn)網(wǎng)絡(luò)即時通信軟件的相關(guān)知識2.1Winsock的原理Sockets最初只是UNIX系統(tǒng)中最流行的網(wǎng)絡(luò)通信接口之一,它不支持微機DOS環(huán)境和MicrosoftWindows環(huán)境。Sockets在UNIX中成功的應用產(chǎn)生了將其移植到DOS和Windows環(huán)境下的設(shè)想。1992年制定出了WindowsSockets規(guī)范1.0版;但在實際使用過程中,發(fā)現(xiàn)了一些問題,因此由MartinHall領(lǐng)導的WindowsSockets委員會對1.0版作了一些修改,并于1993年推出1.1版規(guī)范。WindowsSockets是MicrosoftWindows的網(wǎng)絡(luò)程序設(shè)計接口,它是從BerkeleySockets擴展而來的。WindowsSockets在繼承了BerkeleySockets主要特征的基礎(chǔ)上,又對它進行了重要擴充。這些擴充主要是提供了一些異步函數(shù),并增加了符合Windows消息驅(qū)動特性的網(wǎng)絡(luò)事件異步選擇機制。這些擴充有利于應用程序開發(fā)者編制符合Windows編程模式的軟件,它使在Windows下開發(fā)高性能的網(wǎng)絡(luò)程序成為可能。WindowsSockets實現(xiàn)一般都由兩部分組成:開發(fā)組件和運行組件。開發(fā)組件是供程序員開發(fā)WindowsSockets應用程序使用的,它包括介紹WindowsSockets實現(xiàn)的文檔、WindowsSockets應用程序接口(API)引入庫和一些頭文件。頭文件WINSOCK.H是WindowsSockets最重要的頭文件,它包括了WindowsSockets實現(xiàn)所定義的宏、常數(shù)值、數(shù)據(jù)結(jié)構(gòu)和函數(shù)調(diào)用接口原型。運行組件是WindowsSockets應用程序接口的動態(tài)連接庫(DLL),文件名為WINSOCK.DLL,應用程序在執(zhí)行時通過裝入它實現(xiàn)網(wǎng)絡(luò)通信功能。[3]圖2-1Socket的通信結(jié)構(gòu)2.2TCP/IP協(xié)議的原理TCP/IP協(xié)議叫做傳輸控制/網(wǎng)際協(xié)議,它是Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。TCP/IP是網(wǎng)絡(luò)中使用的基本的通信協(xié)議。

雖然從名字上看TCP/IP包括兩個協(xié)議,傳輸控制協(xié)議(TCP)和網(wǎng)際協(xié)議(IP),但TCP/IP實際上是一組協(xié)議,它包括上百個各種功能的協(xié)議,如:遠程登錄、文件傳輸和電子郵件等,而TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€基本的重要協(xié)議。通常說TCP/IP是Internet協(xié)議族,而不單單是TCP和IP。[4]

TCP/IP協(xié)議的基本傳輸單位是數(shù)據(jù)包(datagram),TCP協(xié)議負責把數(shù)據(jù)分成若干個數(shù)據(jù)包,并給每個數(shù)據(jù)包加上包頭(就像給一封信加上信封),包頭上有相應的編號,以保證在數(shù)據(jù)接收端能將數(shù)據(jù)還原為原來的格式,IP協(xié)議在每個包頭上再加上接收端主機地址,這樣數(shù)據(jù)找到自己要去的地方,如果傳輸過程中出現(xiàn)數(shù)據(jù)丟失、數(shù)據(jù)失真等情況,TCP協(xié)議會自動要求數(shù)據(jù)重新傳輸,并重新組包??傊琁P協(xié)議保證數(shù)據(jù)的傳輸,TCP協(xié)議保證數(shù)據(jù)傳輸?shù)馁|(zhì)量。[5]TCP/IP協(xié)議數(shù)據(jù)的傳輸基于TCP/IP協(xié)議的四層結(jié)構(gòu):應用層、傳輸層、網(wǎng)絡(luò)層、接口層,數(shù)據(jù)在傳輸時每通過一層就要在數(shù)據(jù)上加個包頭,其中的數(shù)據(jù)供接收端同一層協(xié)議使用,而在接收端,每經(jīng)過一層要把用過的包頭去掉,這樣來保證傳輸數(shù)據(jù)的格式完全一致。圖2-2TCP報文封裝TCP/IP協(xié)議四層結(jié)構(gòu)的主要功能如下:網(wǎng)絡(luò)接口層:負責接收和發(fā)送物理幀網(wǎng)絡(luò)層:負責相鄰節(jié)點之間的通信傳輸層:負責起點到終點的通信應用層:提供諸如文件傳輸、電子郵件等應用程序要把數(shù)據(jù)以TCP/IP協(xié)議方式從一臺計算機傳送到另一臺計算機,數(shù)據(jù)需經(jīng)過上述四層通訊軟件的處理才能在物理網(wǎng)絡(luò)中傳輸。2.3C/S結(jié)構(gòu)的概述C/S結(jié)構(gòu)(Client/Server結(jié)構(gòu))是大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應用系統(tǒng)正在向分布式的Web應用發(fā)展,Web和Client/Server應用都可以進行同樣的業(yè)務(wù)處理,應用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應用系統(tǒng),通過現(xiàn)有應用系統(tǒng)中的邏輯可以擴展出新的應用系統(tǒng)。這也就是目前應用系統(tǒng)的發(fā)展方向。傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應百臺電腦以上局域網(wǎng)用戶同時使用。[6]圖2-3客戶端/服務(wù)器模式通信架構(gòu)C/S結(jié)構(gòu)在技術(shù)上很成熟,它的主要特點是交互性強、具有安全的存取模式、網(wǎng)絡(luò)通信量低、響應速度快、利于處理大量數(shù)據(jù)。但是該結(jié)構(gòu)的程序是針對性開發(fā),變更不夠靈活,維護和管理的難度較大。通常只局限于小型局域網(wǎng),不利于擴展。并且,由于該結(jié)構(gòu)的每臺客戶機都需要安裝相應的客戶端程序,分布功能弱且兼容性差,不能實現(xiàn)快速部署安裝和配置,因此缺少通用性,具有較大的局限性。要求具有一定專業(yè)水準的技術(shù)人員去完成。2.4基于Socket通信的基本應用模式在基丁Socket構(gòu)造TCP/IP網(wǎng)絡(luò)應用時,通信雙方常常構(gòu)成客戶端/服務(wù)器的模式,即客戶向服務(wù)器發(fā)出服務(wù)器請求,服務(wù)器接收到請求后,提供相應的服務(wù)。服務(wù)與被服務(wù)都是通過傳遞各種請求消息、響應消息等一問一答的方式來實現(xiàn)靈活的網(wǎng)絡(luò)應用。以有連接方式為例,客戶端和服務(wù)器在通信過程中的基本操作和時序如圖2-4所示:圖2-4基于Socket應用的基本時序圖在上述基本時序中,請求服務(wù)和提供服務(wù)的過程都可以反復進行,直到完成某個預定的應用功能。這樣,通過基本消息傳遞,可以建立起靈活多樣的網(wǎng)絡(luò)應用。在實際設(shè)計的應用中,服務(wù)器往往不只服務(wù)于來自單個客戶端的請求。此時,服務(wù)器接收到一個連接請求,并建立起了連接,接下來的處理還可以劃分為兩種截然不同的方式:1、是直接處理該請求并發(fā)送應答信息,然后再進行下面的工作。在服務(wù)器處理請求的過程忠,不可能再對另外的請求進行響應。只有當一個完整的服務(wù)過程完成后,程序再循環(huán)回到接收請求的地方,此時才又可以接收下一個請求。如此周而復始。這種方式叫做重復服務(wù)器,即一次只能處理一個服務(wù)請求。2、是每收到一個服務(wù)請求時,就激活一個新的進程(或線程)來專門處理這個客戶請求。新建立的進程(或線程)從創(chuàng)建它的服務(wù)器繼承了建立好的連接等資源,并使用這個建立好的連接與客戶端進行通信,為客戶端提供服務(wù)。而原來的服務(wù)器就可以立刻又回到等待請求的地方,可以接受下一個連接請求。新進程(或線程)中服務(wù)完成后,關(guān)閉自己與客戶端的通信鏈路,并自行終止。這種方式叫做并發(fā)式服務(wù)器,即可以同時響應多個客戶端的清求。[7]如果應用比較簡單,客戶端較少,同時發(fā)生請求的概率很低,或者客戶端不介意等待服務(wù)的時間,可以采用重復服務(wù)器。而如果客戶端較多,并對服務(wù)響應的要求較高,就應當采用并發(fā)服務(wù)器,這種方式可以滿足大型和復雜應用的需求。如果使用無連接的模式,就不存存建立、斷開連接等過程。但是通過基本信息傳遞實現(xiàn)提供服務(wù)的道理與有連接的模式是一樣的。2.5設(shè)計工具VisualBasic介紹BASIC是Beginner'sAll-purposesymbolicinstructionCode(初學者通用符號指令代碼)的縮寫,是國際上廣泛使用的一種計算機高級語言。BASIC簡單、易學,目前仍是計算機入門的主要學習語言之一。BASIC語言的問世及發(fā)展BASIC語言自其問世經(jīng)歷了以下四個階段:第一階段:(1964年~70年代初)1964年BASIC語言問世。第二階段:(1975年~80年代中)微機上固化的BASIC第三階段:(80年代中~90年代初)結(jié)構(gòu)化BASIC語言。第四階段:(1991年以來)VisualBASIC1991年,微軟推出了VisualBasic(簡稱VB)1.0版。這在當時引起了很大的轟動。許多專家把VB的出現(xiàn)當作是軟件開發(fā)史上的一個具有劃時代意義的事件。其實,以我們現(xiàn)在的目光來看,VB10的功能實在是太弱了。但在當時,它是第一個“可視”的編程軟件。這使得程序員欣喜之極,都嘗試在VB的平臺上進行軟件創(chuàng)作。微軟也不失時機地在四年內(nèi)接連推出VB2.0,VB3.0和VB4.0等三個版本。并且從VB3開始,微軟將ACCESS的數(shù)據(jù)庫驅(qū)動集成到了VB中,這使得VB的數(shù)據(jù)庫編程能力大大提高。從VB4開始,VB也引入了面向?qū)ο蟮某绦蛟O(shè)計思想。VB功能強大,學習簡單。而且,VB還引入了“控件”的概念,使得大量已經(jīng)編好的VB程序可以被我們直接拿來使用,如今,VB已經(jīng)有了6.0版。幾個定義:在討論VisualBasic時,經(jīng)??梢月牭竭@些術(shù)語,因此對這些術(shù)語的基本理解十分有幫助。控件:提供程序可見界面的可重用對象。控件的示例有文本框、標簽和命令按鈕。事件:由用戶或操作系統(tǒng)引發(fā)的動作。事件的示例有擊鍵、單擊鼠標、一段時間的限制,或從端口接收數(shù)據(jù)。方法:嵌入在對象定義中的程序代碼,它定義對象怎樣處理信息并響應某事件。例如,數(shù)據(jù)庫對象有打開紀錄集并從一個記錄移動到另一個記錄的方法。對象:程序的基本元素,它含有定義其特征的屬性,定義其任務(wù)和識別它可以響應的事件的方法??丶痛绑w是VisualBasic中所有對象的示例。過程:為完成任務(wù)而編寫的代碼段。過程通常用于響應特定的事件。屬性:對象的特征,如尺寸、位置、顏色或文本。屬性決定對象的外觀,有時也決定對象的行為。屬性也用于為對象提供數(shù)據(jù)和從對象取回信息。[8]2.6本章小結(jié)本章主要介紹了設(shè)計過程中用到的一些相關(guān)的技術(shù)和原理,如TCP/IP和Winsock等。還有軟件的設(shè)計平臺的介紹,主要是編程工具VB的歷史背景和相關(guān)的一些主要控件的介紹,為下面的設(shè)計奠定了一個良好的理論基礎(chǔ)。第3章網(wǎng)絡(luò)即時通信軟件的設(shè)計3.1即時通信系統(tǒng)的需求分析3.1.1基本需求1、一般即時消息格式需求1)所有實體必須至少使用一種消息格式;2)必須定義發(fā)信者和即時收件箱的標識;3)必須包含一個讓接收者可以回消息的地址;4)必須反映當前最好的可用性實踐。2、可靠性需求協(xié)議必須存在機制,保證即時消息成功投遞或者投遞失敗的時候,發(fā)信者獲得足夠的信息。3、性能需求1)傳輸必須足夠的迅速;2)內(nèi)容必須足夠豐富;3)長度盡量足夠長。3.1.2協(xié)議需求協(xié)議是一系列的步驟,它包括雙方或者多方,設(shè)計它的目的是要完成一項任務(wù)。即時通訊協(xié)議,參與的雙方或者多方是即時通訊的實體。協(xié)議必須是雙方或者多方參與的,一方單獨完成的就不算協(xié)議。這樣在協(xié)議動作的過程中,雙方必須交換信息,包括控制信息、狀態(tài)信息等等。這些信息的格式必須是協(xié)議參與方同意并且遵循的。好的協(xié)議要求清楚,完整,每一步都必須有明確的定義,并且不會引起誤解;對每種可能的情況必須規(guī)定具體的動作。3.1.3安全需求A發(fā)送即時消息M給B:1)如果無法發(fā)送,A必須接到確認;2)協(xié)議必須為B提供方法檢查A發(fā)送了這條信息;3)協(xié)議不能暴露A的IP地址;4)協(xié)議必須為A提供方法保證沒有其他個體C可以看到內(nèi)容M;5)協(xié)議必須為A提供方法保證沒有其他個體C可以篡改M。3.1.4系統(tǒng)需求1、注冊需求1)即時通訊系統(tǒng)擁有多個賬戶,允許多個用戶注冊;2)一個用戶可以注冊多個帳號;3)注冊所使用的帳號類型為數(shù)字;4)要防止同一個用戶在一段時間內(nèi)反復注冊三個或者三個以上的帳號。2、通訊需求1)用戶可以傳輸文本消息;2)用戶可以傳輸RTF格式消息;3)用戶可以傳輸文件;4)客戶端與服務(wù)器端可以傳輸消息。3、好友管理需求1)用戶可以查詢好友;2)用戶可以添加好友;3)用戶可以添加多個人為好友,一個用戶可以被多個人添加為好友;4)用戶可以刪除好友。3.2界面設(shè)計用戶界面是一個應用程序最重要的部分,對用戶而言,界面就是應用程序,他們感覺不到幕后正在執(zhí)行的代碼。不論花多少時間和精力來編制和優(yōu)化代碼,應用程序的可用性仍然在很大程度上依賴于界面的好壞。VisualBasic采用在窗體上拖曳控件的方式為創(chuàng)建用戶界面提供了非常簡便的方法,窗體的設(shè)計和規(guī)劃不僅影響到它本身外觀的可觀賞性,而且對應用程序的可操作性也起到很重要的作用.一個良好的用戶界面并不是只有專業(yè)的美術(shù)人員才能設(shè)計出來,在大多數(shù)時候,這樣的界面設(shè)計都是由程序設(shè)計人員完成,因此了解用戶界面的設(shè)計原則,是每個程序設(shè)計人員都要做的事情。[9]本軟件包含10個窗體和5個模塊,基本上這些窗體的實現(xiàn)的功能都比較簡單,所以窗體里也不用多少個控件,在這里就主要介紹下登錄界面和主界面的設(shè)計要點。登錄界面這是用戶使用此軟件首先看到的一個界面,所以對用戶來說這個界面的可用性和美觀性直接影響到對整個軟件的看法。首先暫且給此軟件命名為MY-IM,這樣聽起來比較直觀吧!想要在登錄的窗體標題上顯示“MY-IM登錄”,只要把窗體屬性的Caption值改成“MY-IM登錄”即可。同時也可以在文字前加上圖標(圖中沒有添加),這樣就顯得有點特色。然后把窗體分成兩部分:操作方法文本說明和用戶信息輸入的控件放置。為了美觀起見,在文本說明輸入的前面加上一個圖標(如圖3-1的“”);然后再輸入“歡迎使用MY-IM”和使用該軟件的方法。最好把這兩塊文本分成兩個標簽,因為這樣的話后面程序用到的時候顯示得就比較清晰明了。另一部分要使用到的控件有標簽、文本框、復選框和按鈕?!坝脩裘?、“密碼”和“服務(wù)器IP”這三組文字使用的是標簽控件,因為這三組文字不需要改動,只是提示用戶后面文本框內(nèi)需要輸入的相應內(nèi)容。和下面的“記住密碼”用的都是復選框控件,同時為了方便用戶,把復選框放在輸入用戶名后,這樣用戶就可以及時地確認自己是否為新用戶,減少了輸入的錯誤?!坝涀∶艽a”也一樣。其他兩個是按鈕,用戶輸入好信息后,如果沒錯誤,按繼續(xù)按鈕就可以進入主界面;如果不需要登錄,按關(guān)閉就可以退出程序。按此步驟設(shè)計完成大致的圖如3-1所示:圖3-1MY-IM登錄界面主界面主界面是程序的核心,各個功能都是通過這個界面來連接完成的。這個窗體主要通過菜單控件來完成,總共包括三個菜單項:文件、工具和幫助。文件菜單里又包括登錄、修改密碼、修改個人信息、報表、個人狀態(tài)和關(guān)閉。登錄項在用戶登錄后顯示的是“注銷”;點擊修改密碼就會彈出修改密碼的窗體;修改個人信息就會彈出個人信息的窗體;報表的窗體里包括發(fā)送給服務(wù)器錯誤、評論及投訴的報表;個人狀態(tài)顯示的是用戶目前的狀態(tài),分別用幾種顏色來表示:綠色表示在線,紅色表示忙碌,黃色表示離開,灰色表示隱身或離線。關(guān)閉就是關(guān)閉此軟件。工具菜單里包括發(fā)送消息、用戶信息、文件傳輸和添加刪除好友。這些都是通過調(diào)用相關(guān)的窗體來實現(xiàn)的。幫助菜單里顯示的是關(guān)于此軟件的一些說明。其他的有兩個快捷的按鈕,分別是用來發(fā)送和選擇用戶狀態(tài)的按鈕,因為想要在這兩個按鈕上添加圖標,所以寫上了“圖標”兩個字,下圖只是表達一種效果;顯示登錄的用戶自己的用戶名和用戶目前的狀態(tài)的標簽及顯示好友列表的Treeview控件,這個控件的參數(shù)要在程序里設(shè)置,所以這里沒有添加相關(guān)的內(nèi)容;還有狀態(tài)欄,用來顯示各種提示的信息。根據(jù)這樣的思路,再對界面進行一定的整合和排列后就得到如圖3-2這樣的效果。圖3-2軟件主界面3.3系統(tǒng)設(shè)計和功能的實現(xiàn)3.3.1各模塊的邏輯分析及設(shè)計前面介紹了軟件界面的設(shè)計,但光有界面還是遠遠不夠的,這樣不能實現(xiàn)任何的功能,所以還需要很重要的后臺支持,這個后臺就是程序代碼。下圖給出的是軟件的整體設(shè)計框架,這個軟件實現(xiàn)的功能都可以從圖中看出,下面就先來對各個模塊進行分析和代碼編寫流程的設(shè)計。圖3-3軟件的整體設(shè)計框架用戶登錄模塊。擁有合法(如:用戶名中不能包含空格等)用戶名的用戶,輸入與上次相同的密碼(如果是新用戶,只要在用戶名后選擇新用戶即可。注意:密碼中也不能包含空格!),然后輸入對應的服務(wù)器IP地址就可以通過客戶端登錄到服務(wù)器,服務(wù)器獲取客戶端的用戶名和網(wǎng)絡(luò)環(huán)境數(shù)據(jù),保存在用戶數(shù)據(jù)表中??蛻舳说卿浿?,將從好友數(shù)據(jù)表中讀取好友,從在線用戶數(shù)據(jù)表中讀取在線用戶信息,從用戶基本信息數(shù)據(jù)表讀取好友基本數(shù)據(jù)。[10]下面先給出用戶登錄的邏輯圖,如圖3-4所示。圖3-4用戶登錄邏輯過程根據(jù)圖3-4的邏輯過程,我們可以對用戶登錄模塊的代碼進行編寫,代碼的編寫流程圖如圖3-5所示(這里默認服務(wù)器已經(jīng)開啟,并且輸入的服務(wù)器IP地址正確)。圖3-5登錄模塊代碼編寫流程圖2、個人信息修改模塊首先向服務(wù)器發(fā)送修改個人信息的請求給服務(wù)器,服務(wù)器根據(jù)用戶名和相應的指令查詢用戶的個人信息,然后調(diào)用服務(wù)器中存儲的用戶信息,顯示在用戶個人信息的窗體中,用戶如果要修改資料,就把用戶修改的資料保存下來存到服務(wù)器中,用戶也可以直接看到自己的信息已經(jīng)被修改了。個人信息修改邏輯過程如圖3-6所示。圖3-6用戶信息修改邏輯過程密碼修改模塊用戶首先要記住自己的密碼,這樣也可以防止被他人隨意修改。同時為了保證用戶輸入的密碼是否符合用戶的要求,再輸入一次確認密碼就可以保證密碼是用戶想要修改的結(jié)果,然后保存,同時向服務(wù)器發(fā)送密碼修改的請求,服務(wù)器就把修改后的密碼保存下來。密碼修改模塊代碼編寫流程圖如圖3-7所示。圖3-7密碼修改模塊代碼編寫流程圖發(fā)送報表模塊報表包括三類:錯誤、評論和投訴。首先拉一個文本框,還有三個按鈕,如果要發(fā)送,只需要在文本框中輸入要發(fā)送的內(nèi)容,然后選擇一個按鈕進行發(fā)送,這樣,代碼里只要輸入指令和相應的內(nèi)容發(fā)送給服務(wù)器即可,發(fā)送完后清空文本框內(nèi)容,隱藏此窗體。5、刪除好友模塊用戶刪除好友時,用戶在好友列表中選擇刪除對象并執(zhí)行刪除操作,系統(tǒng)會把該好友從好友列表中刪除,然后從好友數(shù)據(jù)表中刪除該用戶的好友記錄,就完成了好友刪除操作。刪除好友模塊邏輯過程如圖3-8所示。圖3-8刪除好友模塊邏輯過程6、添加好友模塊輸入用戶名后檢查是否存在此用戶,向服務(wù)器發(fā)送添加好友的指令和好友用戶名,服務(wù)器把好友添加到用戶好友數(shù)據(jù)表中,好友顯示在用戶好友列表里,同時顯示好友目前狀態(tài)。添加好友模塊邏輯過程如圖3-9所示。圖3-9添加好友模塊邏輯過程7、發(fā)送消息模塊先選擇要發(fā)送的對象,然后在RichText里輸入要發(fā)送的信息,從字體中選擇您想要的效果(可以對部分文字進行設(shè)置,這樣就可以突出一些關(guān)鍵字),發(fā)送指令、輸入的信息及待接收的好友用戶名給服務(wù)器,然后通過服務(wù)器再轉(zhuǎn)發(fā)給待接收的好友。發(fā)送消息模塊邏輯過程模塊邏輯過程如圖3-10所示。圖3-10發(fā)送消息模塊邏輯過程8、接收消息模塊顯示好友發(fā)送的消息,同時顯示發(fā)送的好友用戶名。如果要回復就輸入回復的信息,加上發(fā)送者用戶名,然后通過服務(wù)器轉(zhuǎn)發(fā)給對應的好友。9、文件傳輸模塊。這是即時通信軟件中添加的比較實用的功能。先選擇要傳輸文件的好友,然后通過服務(wù)器獲得對方的IP地址,選擇要發(fā)送的文件,準備進度條,然后等待對方確認接收,對方確認選定文件保存路徑后就可以開始接收,進度條就開始滾動,直到接收方完全接收完文件,發(fā)送方同時也顯示文件完全發(fā)送,這樣文件傳輸就完成了。文件傳輸過程中不需要服務(wù)器的干預,本程序要實現(xiàn)的只是簡單的文本文件傳輸,而且是使用Winsock來通信,所以能傳輸?shù)奈募容^小。文件傳輸模塊邏輯過程如圖3-11所示。圖3-11文件傳輸模塊邏輯過程3.3.2系統(tǒng)代碼的編寫和功能的實現(xiàn)1、用戶登錄模塊這個模塊需要完成用戶身份驗證、是否為新用戶、是否保存密碼三個方面的處理。首先要做的是判斷輸入的用戶名、密碼是否符合規(guī)定的格式,代碼如下:IfInStr(1,Text1.Text,Chr(32))OrInStr(1,Text2.Text,Chr(32))ThenMsgBox"您的用戶名和密碼中不允許有空格,請重新輸入!"ExitSubEndIfIfText1.Text=""ThenMsgBox"請輸入您的用戶名!"ExitSubEndIfIfText2.Text=""ThenMsgBox"請輸入您的密碼!"ExitSubEndIfIfText3.Text=""ThenMsgBox"請輸入服務(wù)器IP地址!"ExitSubEndIf服務(wù)器IP指的是作為服務(wù)器的機器的IP,同時要和作為服務(wù)器的機器處于同一個局域網(wǎng)中。同時服務(wù)器還要判斷用戶輸入的用戶名是否存在或是否被服務(wù)器處理了,如凍結(jié)帳號;判斷輸入的密碼是否和服務(wù)器上次記錄的密碼對應。如果選擇了新用戶,說明服務(wù)器中沒有用戶的信息,那系統(tǒng)就會給新用戶創(chuàng)建一個文件來存儲用戶信息。先對信息中的Name、Sex、Country等進行初始化,保存在一個文件里面,如果用戶對信息進行修改,那么這個文件中存儲的信息也相應地改變。代碼如下:MyPersonalInfo.Name=NicknameMyPersonalInfo.Sex="男"MyPersonalInfo.Country="中華人民共和國"MyPersonalInfo.BirthDay="1984.1.1"MyPersonalInfo.Age="24"MyPersonalInfo.Mail="j123@126.com"MyPersonalInfo.About="空空如也"Open"Info_"&Nickname&".dat"ForRandomAsgFileNumLen=Len(MyPersonalInfo)Put#gFileNum,1,MyPersonalInfoClose#gFileNum如果選擇了保存密碼,系統(tǒng)就會給用戶創(chuàng)建一個INI文件來保存設(shè)置,如果沒有選擇保存密碼,則會判斷出錯,提示“調(diào)用API函數(shù)時發(fā)生錯誤”,但對整個程序并沒有什么影響。SaveINI是模塊中定義的公用函數(shù),如果具體代碼如下:PublicSubSaveINI()DimlngResultAsLongDimstrFileNamestrFileName=App.Path&"\Settings.ini"'Declareyourinifile!lngResult=WritePrivateProfileString(KeySection,_KeyKey,KeyValue,strFileName)IflngResult=0Then'出現(xiàn)錯誤CallMsgBox("調(diào)用API函數(shù)時發(fā)生錯誤",vbExclamation)EndIfEndSub個人信息修改模塊[11]首先要做的是打開信息修改這個窗體時要調(diào)用服務(wù)器中存儲的用戶信息,可由gFileNum=FreeFile這句代碼來實現(xiàn),如果用戶要修改信息,那信息修改完成后要保存起來,然后通過發(fā)送指令和相應的內(nèi)容給服務(wù)器,實現(xiàn)的代碼如下:DimTemp4AsStringTemp4=Replace(RichTextBox1.Text,vbCrLf,"http://crlf\\")MyPersonalInfo.Name=Text5.Text'保存修改的信息MyPersonalInfo.Sex=Combo1.TextMyPersonalInfo.Country=Text1.TextMyPersonalInfo.BirthDay=Text2.TextMyPersonalInfo.Age=Text3.TextMyPersonalInfo.Mail=Text4.TextMyPersonalInfo.About=Temp4Open"Info_"&Nickname&".dat"ForRandomAsgFileNumLen=Len(MyPersonalInfo)Put#gFileNum,1,MyPersonalInfoClose#gFileNumMyIM.Winsock1.SendData".SaveInfo"&Connect.Text1.Text&""&Combo1.Text&""&Text1.Text&""&Text2.Text&""&Text3.Text&""&Text4.Text&""&Text5.Text&""&Temp4Me.Hide密碼修改模塊首先要判斷輸入的原始密碼是否正確,再判斷輸入的修改后的密碼和確認密碼是否一致,如果正確那就保存修改后的密碼,然后發(fā)送給服務(wù)器,對各個文本框置空,實現(xiàn)的代碼如下:PrivateSubbtnChange_Click()IfText1.Text<>MyPwdThen'如果輸入的初始密碼和登錄時輸入的不一樣則跳出提示框MsgBox"您輸入的舊密碼不正確!"ExitSubEndIfIfText2.Text<>Text3.TextThen'如果修改后的密碼和確認密碼不一樣則跳出提示框MsgBox"兩次輸入密碼不符,請重新輸入!"ExitSubEndIfIfText2.Text=""ThenMsgBox"密碼無修改!"ExitSubElseMyPwd=Text2.Text'密碼正確修改后就把Text2中的內(nèi)容替代原來的密碼MyIM.Winsock1.SendData".ChangePassword"&""&Text2.TextEndIfText1.Text=""'置空Text2.Text=""Text3.Text=""Me.HideEndSub發(fā)送報表模塊[12]主要是三個方面的選擇:評論、錯誤和投訴,選擇了確定的安鈕之后,就可以向服務(wù)器發(fā)送信息了,再對文本框置空,實現(xiàn)的代碼如下:MyIM.Winsock1.SendData".ReportComplaint"&Text1.TextText1.Text=""Me.Hide刪除好友模塊從好友列表中選擇要刪除的好友,發(fā)送指令給服務(wù)器即可,代碼如下:PrivateSubmnuBuddyRemove_Click()OnErrorResumeNextWinsock1.SendData".RemoveBuddy"&TreeView1.SelectedItem.KeyEndSub添加好友模塊首先要對待添加的用戶進行驗證,判斷這個用戶是否存在,添加了之后再好友列表中要顯示該添加的好友,服務(wù)器中也要進行相應的保存,代碼如下:PrivateSubmnuBuddyAdd_Click()DimTempAsStringTemp=InputBox("請輸入好友名字!","添加好友","Buddy")'提示標題默認的文本框內(nèi)容IfTemp=""ThenExitSubElseWinsock1.SendData".AddBuddy"&Connect.Text1.Text&""&TempEndIfEndSub發(fā)送消息模塊這個模塊要實現(xiàn)的功能有設(shè)置字體、消息輸入框(即RichTextBox1)大小的變化及消息的發(fā)送,字體包括大小、粗體、斜體和下劃線等,在這里就不列舉代碼了。下面給出消息輸入框大小隨窗體改變的代碼:RichTextBox1.Height=Me.ScaleHeight-Picture2.Height-850RichTextBox1.Width=Me.ScaleWidth這樣就可以實現(xiàn)當窗體變化時,消息輸入框也隨著變化,不然就算把窗體拉大,消息輸入框也不可能增大,那就達不到用戶想要的效果。消息發(fā)送其實就把輸入的文字加上指令及接收者給服務(wù)器就可以,服務(wù)器再轉(zhuǎn)發(fā)給接收方,所以客戶端要做的由這句代碼就可以實現(xiàn):RichTextBox2.Text=".msg"&Replace(RichTextBox1.TextRTF,vbCrLf,"http://crlf\\")&""&RecieversID接收消息模塊與發(fā)送消息模塊不同的就是接收消息要實現(xiàn)的一個功能是顯示新消息,不過消息的顯示是自動彈出式的,所以不需要編寫代碼;還有一個就是回復,其實按回復的按鈕直接就彈出一個發(fā)送消息的窗體就可以了,由下面兩句代碼來實現(xiàn):DimNewSendMessageAsNewSendMessageNewSendMessage.ShowNewSendMessage就是創(chuàng)建SendMessage這個窗體的實例。同時也要顯示發(fā)送方的用戶名,由這句代碼NewSendMessage.Label2.Caption=SenderName來實現(xiàn)。10、文件傳輸模塊因為文件的接收和發(fā)送是一個完成的過程,所以我們把接收和發(fā)送文件穿插起來一起描述。這兩塊主要需要實現(xiàn)的有進度條的滾動、發(fā)送文件信息和對方接收文件等功能。進度條初始值為0,當文件開始傳輸時,進度條根據(jù)發(fā)送的文件字節(jié)數(shù),調(diào)整進度條,同時顯示文件發(fā)送的程度(如100%),代碼如下:ProgressBar1.Max=sizeOfFileProgressBar1.Min=0ProgressBar1.value=ProgressBar1.MinProgressBar1.Visible=TruesizeOfFileSent=sizeOfFileSent+blockSizeOnErrorResumeNextProgressBar1.value=sizeOfFileSentcompLabel.Caption=sizeOfFileSent&"/"&sizeOfFile&"發(fā)送."&Int(sizeOfFileSent/sizeOfFile*100)&"%"DoEvents因為要計算文件發(fā)送的程度,所以務(wù)必要知道文件的長度,同時發(fā)送方還會附上文件名及發(fā)送方用戶名,下面幾句代碼可以表示:sckSystem.SendDataFILE_NAME&nameOfFilesckSystem.SendDataFILE_SIZE&sizeOfFilesckSystem.SendDataUSER_NAME&userName發(fā)送方通過網(wǎng)絡(luò)協(xié)議傳送給接收方,接收方接收發(fā)送方的請求,找到對應的端口同時進行監(jiān)聽,獲得文件信息,保存文件,具體實現(xiàn)的代碼如下所示:Temp=MsgBox("接受來自"&userName&"的"&nameOfFile&"文件("&sizeOfFile&"比特)"&"?",vbYesNo,"傳輸"&nameOfFile&"?")IfTemp=vbYesThensckReceive.ClosesckReceive.LocalPort=hostPort+4'PorttomonitorsckReceive.ListenDoEventsCommonDialog1.fileName=nameOfFileCommonDialog1.ShowSave3.3.3與服務(wù)器之間的通信客戶端和服務(wù)器之間的通信包括客戶端發(fā)送報表給服務(wù)器及服務(wù)器發(fā)送私聊、系統(tǒng)消息給客戶端,主要是通過相互發(fā)送指令來實現(xiàn)的。本人主要做的是客戶端,所以只要在客戶端和服務(wù)器端通過一定的端口連接上后,客戶端通過指令把報表內(nèi)容發(fā)送給服務(wù)器(如圖3-12),而其他的一些需要與服務(wù)器端交互的操作都可以通過發(fā)送指令來實現(xiàn)。服務(wù)器顯示客戶端發(fā)送的報表如圖3-13所示。代碼:PrivateSubCommand2_Click()MyIM.Winsock1.SendData".ReportBug"&Text1.TextText1.Text=""Me.HideEndSub客戶端:圖3-12客戶端發(fā)送報表給服務(wù)器服務(wù)器端:圖3-13服務(wù)器顯示客戶端發(fā)送的報表3.4本章小結(jié)首先介紹了軟件設(shè)計的需求分析,然后再根據(jù)需求來設(shè)計軟件界面及要實現(xiàn)哪些功能,再對這些功能進行分析,總結(jié)出實現(xiàn)這些功能的流程,及如何編寫代碼才能實現(xiàn)功能,最后簡單介紹了客戶端與服務(wù)器之間如何進行通信。第4章結(jié)論4.1完成的工作本即時通信系統(tǒng)采用了C/S模型。在參考了書上的即時通信軟件的基礎(chǔ)上增加和修改了一些功能:如密碼窗體的修改,原來的密碼修改就是輸入新密碼,而且界面上直接顯示出來,經(jīng)過修改,增添了輸入舊密碼和輸入確認密碼,同時把密碼全部顯示成星號;還添加了用戶名的顯示,修改界面使更個性化等。經(jīng)過測試,在同一個局域網(wǎng)內(nèi)兩臺電腦可以互相通信,客戶端可以添加大量的好友,并且多個好友互相之間能同時進行通信,可以進行文本文件的互相傳輸,可以發(fā)送報表給服務(wù)器。4.2存在的問題和未來的展望4.2.1存在的問題由于時間倉促,能力有限,本系統(tǒng)還存在著一些問題需進一步完善,比如對于視頻、音頻文件等的傳輸都沒有實現(xiàn),還有系統(tǒng)安全之類的問題本系統(tǒng)都沒有進行討論,這些都是以后需要完善和改進的地方。1、安全性不高目前很多即時通信工具都受病毒的侵害,而且病毒的種類也日新月異,想要制作一款能高效抵制病毒的軟件還是需要很大的工作量,因此本文也沒怎么談?wù)摼W(wǎng)絡(luò)安全。2、只能傳較小的文本文件VB也是剛接觸不久,對一些控件也只是初步地了解了功能,所以只能做一些最基礎(chǔ)的文本文件傳輸,以后還有待于提高。3、不能和其他的即時軟件通信因為采用的是不同的協(xié)議,其實目前很多即時通信軟件都不能相互進行通信,所以給用戶帶來很大的不便,利益是其中最大的因素。4.2.2未來的展望本人由于時間能力有限,所以實現(xiàn)的軟件功能還是很少,不過也認識到一些即時通信未來的動向,再根據(jù)相關(guān)研究的報道,歸納出即時通信未來將會呈現(xiàn)的幾大趨勢:1、添加語音/視頻從目前流行的即時通訊軟件基本都集成了語音和/或視頻通訊的功能,應該講這是即時通訊系統(tǒng)軟件的一個發(fā)展的必然趨勢和階段。這是因為近年來,隨著計算機網(wǎng)絡(luò)技術(shù)迅猛的發(fā)展,以多媒體通信為主體的信息網(wǎng)絡(luò)成為世界關(guān)注的熱點。尤其是隨著基干TCP/IP協(xié)議簇的因特網(wǎng)的高速發(fā)展,IP網(wǎng)絡(luò)己經(jīng)在全世界構(gòu)筑了一個可以實現(xiàn)信息互通的統(tǒng)一平臺,以IP技術(shù)為核心的分組化和以移動通信為核心的無線化己經(jīng)取代電路交換技術(shù)而成為電信網(wǎng)絡(luò)發(fā)展的主流方向。2、與電子郵件整合將成為業(yè)務(wù)推廣的主流事實正是如此,IM軟件如今大都捆綁了電子郵件,并支持郵件到達的即時提示,這代表著一種IM與電子郵件日益融合的趨勢。3、多功能化將成為即時通信工具差異化競爭的主要手段從某種意義上講,現(xiàn)在的IM不能再被稱為即時通信軟件,它幾乎能捆綁互聯(lián)網(wǎng)上各種流行的應用,它既可以是RSS信息聚合器,也可以是瀏覽器、搜索引擎,也可以是網(wǎng)絡(luò)硬盤等,而即時通信只是其眾多功能中的一項。當然,它是一項最為基礎(chǔ)和基本性的功能,也是人們?nèi)詫⑵浞Q為即時通信軟件的主要理由。4、跨平臺將是即時通信業(yè)務(wù)發(fā)展的必由之路 跨平臺也是IM軟件發(fā)展演變的一大趨勢,這不僅表現(xiàn)在IM軟件通??梢栽诓煌愋偷牟僮飨到y(tǒng)平臺上運營并且互通,而且更多地表現(xiàn)在,IM軟件的網(wǎng)絡(luò)承載平臺已經(jīng)由最初的互聯(lián)網(wǎng)拓展到了電信網(wǎng)甚至廣電網(wǎng),并且它們之間能夠?qū)崿F(xiàn)互通。這種跨平臺通信的特性有助于IM在未來成為通信的核心,并整合其它通信方式,為用戶提供真正的綜合通信解決方案。致謝在此首先要感謝我的導師郭招娣老師,在程序的準備和設(shè)計階段,她給我提供了很多相關(guān)實用的資料;在論文的格式和內(nèi)容方面給我了很多有用的意見。感謝家人給我這個上大學的機會,讓我的知識更加充實;感謝家人對我的支持,讓我順利地完成我的學業(yè)。還要感謝的是鄭文靜和其他同學,在整個設(shè)計的過程中,大家都給了我各方面的幫助。參考文獻[1]孔鵬.即時通訊系統(tǒng)的研究與實現(xiàn)[D].山東:中國學術(shù)期刊雜志社,2006[2]王晶,李威.2004年國內(nèi)外即時通信市場研究報告[J/OL].,2004[3]吳志堅,溫文.利用WinSock實現(xiàn)實時通信的新方法[J].襄樊職業(yè)技術(shù)學報.2006,5(2):5~6[4]周明天,汪文勇.TCP/IP網(wǎng)絡(luò)原理與技術(shù)[M].北京:清華大學出版社,2001:121~150[5]郭川軍,秦洪杰.基于TCP/IP網(wǎng)絡(luò)通訊系統(tǒng)的研究[J].信息技術(shù),2006,(5):153~154[6]強建國,馬曉,楊東亞.用Windows套接字實現(xiàn)雙向Internet實時通訊[J].蘭州理工大學學報,2005,31(5):99~101[7]朱蓉.基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信模式的實現(xiàn)[J].嘉興學院學報,2006,18(5):80~81[8]羅朝盛.VisualBasic6.0程序設(shè)計教程[M].北京:人民郵電出版社,2002:347~390[9]宋國龍.淺談即時通訊軟件的開發(fā)技術(shù)[J].\o"山西電子技術(shù)"山西電子技術(shù),2003,(2):1~2[10]朱玲華.基于圖形的即時通信系統(tǒng)研究[D].北京:中國學術(shù)期刊雜志社,2003[11]曹衍龍.VisualBasic系統(tǒng)開發(fā)實例精粹[M].北京:人民郵電出版社,2005:461~461[12]AnthonyJones.NetworkProgrammingforMicrosoftWindows

[M].第二版.北京:機械工業(yè)出版社,2000:101~163[13]JAMESF.KUROSE,KEITHW.ROSS.ComputerNetworks[M].第三版.北京:清華大學出版社,1998:340~390附錄1程序運行實例附圖1-1用戶登錄界面附圖1-2程序主界面附圖1-3查看好友信息界面附圖1-4密碼修改界面附圖1-5文件發(fā)送界面附圖1-6發(fā)送報表界面附圖1-7好友添加界面附圖1-8用戶信息修改界面附圖1-9消息發(fā)送界面附錄2部分程序清單'***************發(fā)送文件***************PrivateSubsckSystem_DataArrival(ByValbytesTotalAsLong)blockSize=2048DimtempComDataAsStringsckSystem.GetDatatempComData,vbStringDimCommandAsStringCommand=Mid(tempComData,1,1)'MsgBoxCommandIfCommand=CANCEL_TRANSFERThenstopSendingEndIfIfCommand=ENABLE_STARTThenCommand1.Enabled=TrueEndIfIfCommand=ACCEPT_TRANSFERThenDoEventssckSend.ConnectDoUntilsckSend.State=sckConnected'等待直到連接上DoEventsLoopGoToBeginTransferEndIfIfCommand=CONTINUE_TRANSFERThen'OnErrorGoToErrorHandler'最后調(diào)整塊長度這樣就可以不用讀取太多數(shù)據(jù)IffileLength-Loc(hIn)<=blockSizeThenblockSize=fileLength-Loc(hIn)+1EndIfTemp=Space$(blockSize)'分配讀取緩存GethIn,,Temp'讀取數(shù)據(jù)塊ret=DoEvents()'核查取消按鈕事件等IfquitNowThenGoToendItsckSend.SendDataTemp'//Offitgoes'更新進度條sizeOfFileSent=sizeOfFileSent+blockSizeOnErrorResumeNextProgressBar1.value=sizeOfFileSentcompLabel.Caption=sizeOfFileSent&"/"&sizeOfFile&"發(fā)送."&Int(sizeOfFileSent/sizeOfFile*100)&"%"DoEventsIfsizeOfFileSent>=sizeOfFileThencancel.Caption="關(guān)閉"sckSystem.SendDataCLOSE_TRANSFEREndIfExitSubEndIfIfCommand=CLOSE_TRANSFERThenGoToendItExitSubBeginTransfer:'OnErrorGoToErrorHandlerhIn=FreeFileOpenpathToFileForBinaryAccessReadAshInfileLength=LOF(hIn)'Adjustblocksizeatendsowedon'treadtoomuchdataIffileLength-Loc(hIn)<=blockSizeThenblockSize=fileLength-Loc(hIn)'+1EndIfTemp=Space$(blockSize)'//AllocatethereadbufferGethIn,,Temp'//Readablockofdataret=DoEvents()'//Checkforcancelbuttoneventetc.IfquitNowThenGoToendItsckSend.SendDataTemp'//Offitgoes'updateprogressbarsizeOfFileSent=sizeOfFileSent+blockSize'OnErrorGoToendIt'//ProgressBar1.value=sizeOfFileSentcompLabel.Caption=sizeOfFileSent&"of"&sizeOfFile&"sent."&Int(sizeOfFileSent/sizeOfFile*100)&"%"IfsizeOfFileSent>=sizeOfFileThencancel.Caption="Close"sckSystem.SendDataCLOSE_TRANSFEREndIfExitSubErrorHandler:'//AlwaysclosethefilehandleClosehIn'SendFile=FalseendIt:'cancel.Caption="Close"sckSend.Close'thisseveresthedataconnection,causingtheclienttosave/endthefileClosehInMsgBox"完成傳輸!"UnloadMeEndSub'*************Winsock1接收數(shù)據(jù)時進行的操作************PrivateSubWinsock1_DataArrival(ByValbytesTotalAsLong)IfWinsock1.State=7Then'判斷服務(wù)器是否連接上DimServerCommandAsStringWinsock1.GetDataServerCommand'ServerCommandIfWord(ServerCommand,1)=".FillOutForm"ThenfrmSetInfo.ShowConnect.HideEndIfIfWord(ServerCommand,1)=".ClearIgnoreList"ThenfrmIgnore.List1.ClearIfWord(ServerCommand,1)=".AddIgnore"ThenfrmIgnore.List1.AddItemWord(ServerCommand,2)IfWord(ServerCommand,1)=".Connected"ThenConnect.Label1.Caption="改變用戶名和密碼..."DimTemp2AsStringIfConnect.Check1.value=1ThenTemp2="Yes"ElseTemp2="No"EndIfWinsock1.SendData".login"&Connect.Text1&""&Connect.Text2&""&Temp2EndIfIfWord(ServerCommand,1)=".LogOff"ThenmnuFileToggleLog.Caption="登錄"Winsock1.CloseBuddyUpdater.Enabled=FalseCommand1.Enabled=FalseCommand2.Enabled=FalseLabel1.Caption="離線"TreeView1.Nodes.ClearmnuBuddyMessage.Enabled=FalsemnuStatus.Enabled=FalseEndIfIfWord(ServerCommand,1)=".AlreadyOnList"ThenMsgBox"這個用戶名已經(jīng)存在!"EndIfIfWord(ServerCommand,1)=".UserInfo"ThenDimNewfrmInfoAsNewfrmInfoNewfrmInfo.Caption="Infoon"&RemoteNickNewfrmInfo.Text1.Text=

溫馨提示

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

評論

0/150

提交評論