版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 即時通訊(Instant Messaging)是目前Internet上最為流行的通訊方式,而各</p><p> 種各樣的即時通訊軟件也層出不窮;服務(wù)提供商也提供了越來越豐富的通訊服務(wù)</p><p> 功能。隨著互聯(lián)網(wǎng)的發(fā)展,即時通訊的運用將日益廣泛。</p>
2、<p> 本文圍繞即時通訊的基本文字交流功能,設(shè)計了管理在線用戶,維護(hù)在線用</p><p> 戶,實現(xiàn)文字通信的功能。本系統(tǒng)使用TCP和UDP協(xié)議作為傳輸層的協(xié)議,更加便</p><p> 捷了用戶之間的通訊和交友。 </p><p> 該系統(tǒng)為用戶提供了一個集文字通信、在線信息、文件傳輸于一體的即時通</p><p>
3、 信平臺。經(jīng)過幾個月的項目開發(fā)、測試,本即時通訊系統(tǒng)現(xiàn)已可以正常運行。</p><p> 關(guān)鍵詞:TCP/IP,C/S,Winsock,即時通信系統(tǒng),Visual Basic</p><p><b> ABSTRACT</b></p><p> Instant Messaging is currently the most popula
4、r way to communicate on the Internet,by the way various Instant Messaging software have been continuously appearing; Service provider offers more and more communication services nowadays. As the development of the Inter
5、net, Instant Messaging will perform a wider use and is growing up day after day. </p><p> This thesis is based on the function of exchange, which is the basic character of instant messaging system, online u
6、sers management, safeguarding online users and exchange message are come true. </p><p> This system has offered an instant messaging platform incorporating characters communication, online information and f
7、ile transfer. Through several months develop and test cycle, this instant messaging system can already used to run now.</p><p> Keywords: TCP/IP, C/S, Winsock, Instant Messenger System, Visual Basic </p&
8、gt;<p><b> 目錄</b></p><p><b> 摘要I</b></p><p> ABSTRACTII</p><p><b> 第1章 緒論1</b></p><p> 1.1 研究背景及意義1</p><p
9、> 1.2 網(wǎng)絡(luò)即時通信軟件的現(xiàn)狀2</p><p> 1.3 本文的內(nèi)容安排3</p><p> 第2章 實現(xiàn)網(wǎng)絡(luò)即時通信軟件的相關(guān)知識5</p><p> 2.1 Winsock的原理5</p><p> 2.2 TCP/IP協(xié)議的原理6</p><p> 2.3 C/S結(jié)構(gòu)的概述7&
10、lt;/p><p> 2.4 基于Socket通信的基本應(yīng)用模式8</p><p> 2.5 設(shè)計工具Visual Basic介紹9</p><p> 2.6 本章小結(jié)10</p><p> 第3章 網(wǎng)絡(luò)即時通信軟件的設(shè)計11</p><p> 3.1 即時通信系統(tǒng)的需求分析11</p>
11、<p> 3.1.1 基本需求11</p><p> 3.1.2 協(xié)議需求11</p><p> 3.1.3 安全需求11</p><p> 3.1.4 系統(tǒng)需求12</p><p> 3.2 界面設(shè)計12</p><p> 3.3 系統(tǒng)設(shè)計和功能的實現(xiàn)14</p>&l
12、t;p> 3.3.1 各模塊的邏輯分析及設(shè)計14</p><p> 3.3.2 系統(tǒng)代碼的編寫和功能的實現(xiàn)19</p><p> 3.3.3 與服務(wù)器之間的通信25</p><p> 3.4 本章小結(jié)26</p><p><b> 第4章 結(jié)論27</b></p><p>
13、; 4.1 完成的工作27</p><p> 4.2 存在的問題和未來的展望27</p><p> 4.2.1 存在的問題27</p><p> 4.2.2 未來的展望27</p><p><b> 致謝29</b></p><p><b> 參考文獻(xiàn)30<
14、/b></p><p> 附錄1 程序運行實例31</p><p><b> 第1章 緒論</b></p><p> 網(wǎng)絡(luò)通信是指兩臺或多臺計算機相連接,通過網(wǎng)絡(luò)協(xié)議實現(xiàn)互相通信、共享資源??蛻魴C/服務(wù)器結(jié)構(gòu)是目前最為流行的網(wǎng)絡(luò)通信模式,當(dāng)兩臺計算機建立連接時,服務(wù)器是運行在一方計算機上的應(yīng)用程序,也稱為宿主機,與其他計算機連接的
15、服務(wù),并為被連接的計算機提供數(shù)據(jù);客戶機是運行在另一方計算機上的應(yīng)用程序,它請求與服務(wù)器連接。通常一臺服務(wù)器可連接多臺客戶機。網(wǎng)絡(luò)通信能使多臺計算機間數(shù)據(jù)的傳送變得便利、快捷,不再受到距離的限制。網(wǎng)絡(luò)即時通信也應(yīng)運而生。網(wǎng)絡(luò)即時通信軟件不僅能實現(xiàn)計算機之間數(shù)據(jù)的傳輸,而且可以實現(xiàn)計算機之間實時的文字、語音對話和圖像、文件的傳輸。隨著即時通信軟件的發(fā)展和成熟,它的易用性和實用性也漸漸被廣大的用戶接受。</p><p&g
16、t; 1.1 研究背景及意義</p><p> 互聯(lián)網(wǎng)誕生于傳統(tǒng)的電話網(wǎng)絡(luò),通訊交流可以說是互聯(lián)網(wǎng)天然的應(yīng)用之一。電子郵件就是最重要的通訊交流工具,是互聯(lián)網(wǎng)最早的“殺手級應(yīng)用”。此后興起的網(wǎng)絡(luò)論壇和網(wǎng)絡(luò)聊天室都是網(wǎng)絡(luò)聊天的前身。但是,個人對個人網(wǎng)絡(luò)聊天的真正崛起還是需要從ICQ開始。</p><p> 國內(nèi)來看,從2004年以來,即時通信成為互聯(lián)網(wǎng)和電信行業(yè)最激動人心的熱點。2004
17、年6月,行業(yè)的主導(dǎo)服務(wù)商騰訊在香港成功上市。7月,網(wǎng)易在北京推出了新版的即時通訊軟件網(wǎng)易泡泡2004,新浪斥資近兩億元收購UC即時通訊技術(shù)平臺,搜狐也在年初推出即時通訊軟件“搜Q”。作為電信運營商的中國電信和中國網(wǎng)通也動作頻頻。在國外,互聯(lián)網(wǎng)行業(yè)引人矚目的新星GOOGLE也在近幾年推出自己的即時通信Google Talk,全球即時通信行業(yè)的老大ICQ也計劃進(jìn)入中國市場,一時間眾者云集,讓業(yè)界眼花繚亂。[2]</p><
18、;p> 即時通信系統(tǒng)是一種在后 PC 時代興起的,以 Internet 網(wǎng)絡(luò)為基礎(chǔ)的,允許交互雙方即時地傳送文字、語音、視頻等信息,能夠跟蹤網(wǎng)絡(luò)用戶在線狀態(tài)</p><p> 的網(wǎng)絡(luò)應(yīng)用軟件。即時通信系統(tǒng)產(chǎn)生有著深刻的社會原因:人們都有渴望社交,獲得社會尊重、實現(xiàn)自我的需求,這正是即時通信軟件風(fēng)行的原動力,而物質(zhì)文明的日益發(fā)達(dá)所帶來副作用,又使得人們習(xí)慣與周圍的人保持距離,以致人們更愿意對陌生人敞開心扉
19、,在網(wǎng)絡(luò)中可以跨越年齡、身份、行業(yè)、地域的限制,達(dá)到人與人、人與信息之間的零距離交流。從這點上講,即時通信系統(tǒng)的出現(xiàn)改變了人們的溝通方式和交友文化,大大拓展了個人生活交流的空間。</p><p> 1.2 網(wǎng)絡(luò)即時通信軟件的現(xiàn)狀</p><p> 經(jīng)過近年來的不斷發(fā)展,目前的IM軟件不再局限于簡單的通信功能,而是捆綁或拓展了越來越多的功能。從理論上講,凡是互聯(lián)網(wǎng)上成功的應(yīng)用均可被IM軟
20、件一網(wǎng)打盡,目前比較通行的捆綁功能有瀏覽器、郵件、網(wǎng)絡(luò)硬盤、搜索引擎、媒體播放器、RSS/網(wǎng)絡(luò)日志等?;贗M軟件強大的功能,IM運營商可以開展多種業(yè)務(wù),比較典型的有通信類業(yè)務(wù)、娛樂性業(yè)務(wù)、商務(wù)性業(yè)務(wù)、廣告業(yè)務(wù)、在線市場調(diào)查業(yè)務(wù)等等(見圖1-1)。</p><p> 圖1-1 IM軟件的功能及IM運營商對用戶提供的業(yè)務(wù)</p><p> 不難看出,個人用戶占據(jù)市場主體,企業(yè)用戶潛力巨大
21、,服務(wù)商勢必在這個領(lǐng)域展開全新的爭奪。</p><p> 圖1-2 2005年中國即時通信市場個人及企業(yè)用戶份額</p><p> 2005年中國互聯(lián)網(wǎng)用戶首次超過一億人,達(dá)到10300萬人。個人即時通信用</p><p> 戶(不包括重復(fù)用戶)也達(dá)到了8500萬人,比2004年同期提高35.6%。</p><p> 2004年中國即
22、時傳輸總產(chǎn)值是13.8億元,占整個互聯(lián)網(wǎng)產(chǎn)業(yè)的4.5%。 2005年到達(dá)19.1億元,比同期增長了38.4%,占整個互聯(lián)網(wǎng)產(chǎn)業(yè)的4.6%。預(yù)計到2008年這一數(shù)字將達(dá)到40.4億元。</p><p> 圖1-3 2005-2008年即時通信傳輸市場規(guī)模</p><p> 1.3 本文的內(nèi)容安排</p><p> 本文的內(nèi)容安排如下:</p>&l
23、t;p> 第1章對流行的IM軟件進(jìn)行了追蹤與分析,通過對目前一些通訊軟件的現(xiàn)狀分析,闡述了開發(fā)即時通訊軟件的必要性和可行性;</p><p> 第2章對開發(fā)軟件的技術(shù)基礎(chǔ)進(jìn)行了概述,主要圍繞實現(xiàn)軟件所需的系統(tǒng)結(jié)</p><p> 構(gòu)、平臺選取、以及一些技術(shù)方面的基本概念和基本思想;</p><p> 第3章介紹了軟件(客戶端)設(shè)計思路和概要設(shè)計,從總體
24、上介紹軟件的設(shè)計要求和軟件實現(xiàn)的一些功能;</p><p> 第4章對整個軟件設(shè)計進(jìn)行了總結(jié),并對軟件存在的一些問題和未來發(fā)展提出了一些展望。</p><p> 第2章 實現(xiàn)網(wǎng)絡(luò)即時通信軟件的相關(guān)知識</p><p> 2.1 Winsock的原理</p><p> Sockets最初只是UNIX系統(tǒng)中最流行的網(wǎng)絡(luò)通信接口之一,它不支
25、持微機DOS環(huán)境和Microsoft Windows環(huán)境。Sockets在UNIX中成功的應(yīng)用產(chǎn)生了將其移植到DOS和Windows環(huán)境下的設(shè)想。1992年制定出了Windows Sockets規(guī)范1.0版;但在實際使用過程中,發(fā)現(xiàn)了一些問題,因此由Martin Hall領(lǐng)導(dǎo)的Windows Sockets委員會對1.0版作了一些修改,并于1993年推出1.1版規(guī)范。</p><p> Windows Sock
26、ets是Microsoft Windows的網(wǎng)絡(luò)程序設(shè)計接口,它是從Berkeley Sockets擴(kuò)展而來的。Windows Sockets在繼承了Berkeley Sockets主要特征的基礎(chǔ)上,又對它進(jìn)行了重要擴(kuò)充。這些擴(kuò)充主要是提供了一些異步函數(shù),并增加了符合Windows消息驅(qū)動特性的網(wǎng)絡(luò)事件異步選擇機制。這些擴(kuò)充有利于應(yīng)用程序開發(fā)者編制符合Windows編程模式的軟件,它使在Windows下開發(fā)高性能的網(wǎng)絡(luò)程序成為可能。&l
27、t;/p><p> Windows Sockets實現(xiàn)一般都由兩部分組成:開發(fā)組件和運行組件。 開發(fā)組件是供程序員開發(fā)Windows Sockets應(yīng)用程序使用的,它包括介紹Windows Sockets實現(xiàn)的文檔、Windows Sockets應(yīng)用程序接口(API)引入庫和一些頭文件。頭文件WINSOCK.H是Windows Sockets最重要的頭文件,它包括了Windows Sockets實現(xiàn)所定義的宏、常數(shù)
28、值、數(shù)據(jù)結(jié)構(gòu)和函數(shù)調(diào)用接口原型。運行組件是Windows Sockets應(yīng)用程序接口的動態(tài)連接庫(DLL),文件名為 WINSOCK.DLL,應(yīng)用程序在執(zhí)行時通過裝入它實現(xiàn)網(wǎng)絡(luò)通信功能。[3] </p><p> 圖2-1 Socket的通信結(jié)構(gòu)</p><p> 2.2 TCP/IP協(xié)議的原理</p><p> TCP/IP協(xié)議叫做傳輸控制/網(wǎng)際協(xié)議,
29、它是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é)議,如:遠(yuǎn)程登錄、文件傳輸和電子郵件等,而TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€基本的重要協(xié)議。通常說TCP/IP是Internet協(xié)議族,而不單單是TCP和IP。[4] </p>
30、<p> TCP/IP協(xié)議的基本傳輸單位是數(shù)據(jù)包(datagram),TCP協(xié)議負(fù)責(zé)把數(shù)據(jù)分成若干個數(shù)據(jù)包,并給每個數(shù)據(jù)包加上包頭(就像給一封信加上信封),包頭上有相應(yīng)的編號,以保證在數(shù)據(jù)接收端能將數(shù)據(jù)還原為原來的格式,IP協(xié)議在每個包頭上再加上接收端主機地址,這樣數(shù)據(jù)找到自己要去的地方,如果傳輸過程中出現(xiàn)數(shù)據(jù)丟失、數(shù)據(jù)失真等情況,TCP協(xié)議會自動要求數(shù)據(jù)重新傳輸,并重新組包??傊?,IP協(xié)議保證數(shù)據(jù)的傳輸,TCP協(xié)議保證
31、數(shù)據(jù)傳輸?shù)馁|(zhì)量。[5]TCP/IP協(xié)議數(shù)據(jù)的傳輸基于TCP/IP協(xié)議的四層結(jié)構(gòu):應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、接口層,數(shù)據(jù)在傳輸時每通過一層就要在數(shù)據(jù)上加個包頭,其中的數(shù)據(jù)供接收端同一層協(xié)議使用,而在接收端,每經(jīng)過一層要把用過的包頭去掉,這樣來保證傳輸數(shù)據(jù)的格式完全一致。</p><p> 圖2-2 TCP報文封裝</p><p> TCP/IP協(xié)議四層結(jié)構(gòu)的主要功能如下:</p>
32、;<p> 網(wǎng)絡(luò)接口層:負(fù)責(zé)接收和發(fā)送物理幀</p><p> 網(wǎng)絡(luò)層:負(fù)責(zé)相鄰節(jié)點之間的通信</p><p> 傳輸層:負(fù)責(zé)起點到終點的通信</p><p> 應(yīng)用層:提供諸如文件傳輸、電子郵件等應(yīng)用程序</p><p> 要把數(shù)據(jù)以TCP/IP協(xié)議方式從一臺計算機傳送到另一臺計算機,數(shù)據(jù)需經(jīng)過上述四層通訊軟件的處理
33、才能在物理網(wǎng)絡(luò)中傳輸。</p><p> 2.3 C/S結(jié)構(gòu)的概述</p><p> 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ù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)
34、正在向分布式的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ā)展方向。</p><p> 傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特
35、定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件, 加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用。[6]</p><p> 圖2-3 客戶端/服務(wù)器模式通信架構(gòu)</p><p> C/S結(jié)構(gòu)在技術(shù)上很成熟,它的主要特點是交互性強、具有安全的存取模式、網(wǎng)絡(luò)通信量低、響應(yīng)速度快、利于處理大量數(shù)據(jù)。但是該
36、結(jié)構(gòu)的程序是針對性開發(fā),變更不夠靈活,維護(hù)和管理的難度較大。通常只局限于小型局域網(wǎng),不利于擴(kuò)展。并且,由于該結(jié)構(gòu)的每臺客戶機都需要安裝相應(yīng)的客戶端程序,分布功能弱且兼容性差,不能實現(xiàn)快速部署安裝和配置,因此缺少通用性,具有較大的局限性。要求具有一定專業(yè)水準(zhǔn)的技術(shù)人員去完成。</p><p> 2.4 基于Socket通信的基本應(yīng)用模式</p><p> 在基丁Socket構(gòu)造TCP/I
37、P網(wǎng)絡(luò)應(yīng)用時,通信雙方常常構(gòu)成客戶端/服務(wù)器的模式,即客戶向服務(wù)器發(fā)出服務(wù)器請求,服務(wù)器接收到請求后,提供相應(yīng)的服務(wù)。服務(wù)與被服務(wù)都是通過傳遞各種請求消息、響應(yīng)消息等一問一答的方式來實現(xiàn)靈活的網(wǎng)絡(luò)應(yīng)用。以有連接方式為例,客戶端和服務(wù)器在通信過程中的基本操作和時序如圖2-4所示:</p><p> 圖2-4 基于Socket應(yīng)用的基本時序圖</p><p> 在上述基本時序中,請求服務(wù)和
38、提供服務(wù)的過程都可以反復(fù)進(jìn)行,直到完成某個預(yù)定的應(yīng)用功能。這樣,通過基本消息傳遞,可以建立起靈活多樣的網(wǎng)絡(luò)應(yīng)用。</p><p> 在實際設(shè)計的應(yīng)用中,服務(wù)器往往不只服務(wù)于來自單個客戶端的請求。此時,服務(wù)器接收到一個連接請求,并建立起了連接,接下來的處理還可以劃分為兩種截然不同的方式:</p><p> 1、是直接處理該請求并發(fā)送應(yīng)答信息,然后再進(jìn)行下面的工作。在服務(wù)器處理請求的過程忠
39、,不可能再對另外的請求進(jìn)行響應(yīng)。只有當(dāng)一個完整的服務(wù)過程完成后,程序再循環(huán)回到接收請求的地方,此時才又可以接收下一個請求。如此周而復(fù)始。這種方式叫做重復(fù)服務(wù)器,即一次只能處理一個服務(wù)請求。</p><p> 2、是每收到一個服務(wù)請求時,就激活一個新的進(jìn)程(或線程)來專門處理這個客戶請求。新建立的進(jìn)程(或線程)從創(chuàng)建它的服務(wù)器繼承了建立好的連接等資源,并使用這個建立好的連接與客戶端進(jìn)行通信,為客戶端提供服務(wù)。而原
40、來的服務(wù)器就可以立刻又回到等待請求的地方,可以接受下一個連接請求。新進(jìn)程(或線程)中服務(wù)完成后,關(guān)閉自己與客戶端的通信鏈路,并自行終止。這種方式叫做并發(fā)式服務(wù)器 ,即可以同時響應(yīng)多個客戶端的清求。[7]</p><p> 如果應(yīng)用比較簡單,客戶端較少,同時發(fā)生請求的概率很低,或者客戶端不介意等待服務(wù)的時間,可以采用重復(fù)服務(wù)器。而如果客戶端較多,并對服務(wù)響應(yīng)的要求較高,就應(yīng)當(dāng)采用并發(fā)服務(wù)器,這種方式可以滿足大型和
41、復(fù)雜應(yīng)用的需求。</p><p> 如果使用無連接的模式,就不存存建立、斷開連接等過程。但是通過基本信息傳遞實現(xiàn)提供服務(wù)的道理與有連接的模式是一樣的。</p><p> 2.5 設(shè)計工具Visual Basic介紹</p><p> BASIC是Beginner's All-purpose symbolic instruction Code(初學(xué)者通用
42、符號指令代碼)的縮寫,是國際上廣泛使用的一種計算機高級語言。BASIC簡單、易學(xué),目前仍是計算機入門的主要學(xué)習(xí)語言之一。 </p><p> BASIC語言的問世及發(fā)展 BASIC語言自其問世經(jīng)歷了以下四個階段:</p><p> 第一階段:(1964年~70年代初) 1964年BASIC語言問世。 </p><p> 第二階段:(1975年~80年代中) 微
43、機上固化的BASIC</p><p> 第三階段:(80年代中~90年代初) 結(jié)構(gòu)化BASIC語言。</p><p> 第四階段:(1991年以來) Visual BASIC </p><p> 1991年,微軟推出了Visual Basic(簡稱VB)1.0版。這在當(dāng)時引起了很大的轟動。許多專家把VB的出現(xiàn)當(dāng)作是軟件開發(fā)史上的一個具有劃時代意義的事件。其實,
44、以我們現(xiàn)在的目光來看,VB10的功能實在是太弱了。但在當(dāng)時,它是第一個“可視”的編程軟件。這使得程序員欣喜之極,都嘗試在VB的平臺上進(jìn)行軟件創(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功能強大,學(xué)習(xí)簡單。而且,VB還引入了“控件”的概念,使得大量
45、已經(jīng)編好的VB程序可以被我們直接拿來使用,如今,VB已經(jīng)有了6.0版。</p><p><b> 幾個定義:</b></p><p> 在討論Visual Basic時,經(jīng)常可以聽到這些術(shù)語,因此對這些術(shù)語的基本理解十分有幫助。</p><p> 控件:提供程序可見界面的可重用對象??丶氖纠形谋究?、標(biāo)簽和命令按鈕。</p>
46、<p> 事件:由用戶或操作系統(tǒng)引發(fā)的動作。事件的示例有擊鍵、單擊鼠標(biāo)、一段時間的限制,或從端口接收數(shù)據(jù)。</p><p> 方法:嵌入在對象定義中的程序代碼,它定義對象怎樣處理信息并響應(yīng)某事件。例如,數(shù)據(jù)庫對象有打開紀(jì)錄集并從一個記錄移動到另一個記錄的方法。 </p><p> 對象:程序的基本元素,它含有定義其特征的屬性,定義其任務(wù)和識別它可以響應(yīng)的事件的方法??丶?/p>
47、和窗體是Visual Basic中所有對象的示例。 </p><p> 過程: 為完成任務(wù)而編寫的代碼段。過程通常用于響應(yīng)特定的事件。 </p><p> 屬性:對象的特征,如尺寸、位置、顏色或文本。屬性決定對象的外觀,有時也決定對象的行為。屬性也用于為對象提供數(shù)據(jù)和從對象取回信息。[8]</p><p><b> 2.6 本章小結(jié)</b>
48、;</p><p> 本章主要介紹了設(shè)計過程中用到的一些相關(guān)的技術(shù)和原理,如TCP/IP和Winsock等。還有軟件的設(shè)計平臺的介紹,主要是編程工具VB的歷史背景和相關(guān)的一些主要控件的介紹,為下面的設(shè)計奠定了一個良好的理論基礎(chǔ)。</p><p> 第3章 網(wǎng)絡(luò)即時通信軟件的設(shè)計</p><p> 3.1 即時通信系統(tǒng)的需求分析</p><p
49、> 3.1.1 基本需求</p><p> 1、一般即時消息格式需求</p><p> 1) 所有實體必須至少使用一種消息格式;</p><p> 2) 必須定義發(fā)信者和即時收件箱的標(biāo)識;</p><p> 3) 必須包含一個讓接收者可以回消息的地址;</p><p> 4) 必須反映當(dāng)前最好的可用性
50、實踐。</p><p><b> 2、可靠性需求</b></p><p> 協(xié)議必須存在機制,保證即時消息成功投遞或者投遞失敗的時候,發(fā)信者獲得足夠的信息。</p><p><b> 3、性能需求</b></p><p> 1) 傳輸必須足夠的迅速;</p><p>
51、 2) 內(nèi)容必須足夠豐富;</p><p> 3) 長度盡量足夠長。</p><p> 3.1.2 協(xié)議需求</p><p> 協(xié)議是一系列的步驟,它包括雙方或者多方,設(shè)計它的目的是要完成一項任務(wù)。即時通訊協(xié)議,參與的雙方或者多方是即時通訊的實體。協(xié)議必須是雙方或者多方參與的,一方單獨完成的就不算協(xié)議。這樣在協(xié)議動作的過程中,雙方必須交換信息,包括控制信息、
52、狀態(tài)信息等等。這些信息的格式必須是協(xié)議參與方同意并且遵循的。好的協(xié)議要求清楚,完整,每一步都必須有明確的定義,并且不會引起誤解;對每種可能的情況必須規(guī)定具體的動作。</p><p> 3.1.3 安全需求</p><p> A發(fā)送即時消息M給B:</p><p> 1) 如果無法發(fā)送,A必須接到確認(rèn);</p><p> 2) 協(xié)議必須
53、為B提供方法檢查A發(fā)送了這條信息;</p><p> 3) 協(xié)議不能暴露A的IP地址;</p><p> 4) 協(xié)議必須為A提供方法保證沒有其他個體C可以看到內(nèi)容M;</p><p> 5) 協(xié)議必須為A提供方法保證沒有其他個體C可以篡改M。</p><p> 3.1.4 系統(tǒng)需求</p><p><b&
54、gt; 1、注冊需求</b></p><p> 1)即時通訊系統(tǒng)擁有多個賬戶,允許多個用戶注冊;</p><p> 2)一個用戶可以注冊多個帳號;</p><p> 3)注冊所使用的帳號類型為數(shù)字;</p><p> 4)要防止同一個用戶在一段時間內(nèi)反復(fù)注冊三個或者三個以上的帳號。</p><p>
55、;<b> 2、通訊需求</b></p><p> 1)用戶可以傳輸文本消息;</p><p> 2)用戶可以傳輸RTF格式消息;</p><p> 3)用戶可以傳輸文件;</p><p> 4)客戶端與服務(wù)器端可以傳輸消息。</p><p><b> 3、好友管理需求<
56、;/b></p><p> 1)用戶可以查詢好友;</p><p> 2)用戶可以添加好友;</p><p> 3)用戶可以添加多個人為好友,一個用戶可以被多個人添加為好友;</p><p> 4)用戶可以刪除好友。</p><p><b> 3.2 界面設(shè)計</b></p&
57、gt;<p> 用戶界面是一個應(yīng)用程序最重要的部分,對用戶而言,界面就是應(yīng)用程序,他們感覺不到幕后正在執(zhí)行的代碼。不論花多少時間和精力來編制和優(yōu)化代碼,應(yīng)用程序的可用性仍然在很大程度上依賴于界面的好壞 。Visual Basic采用在窗體上拖曳控件的方式為創(chuàng)建用戶界面提供了非常簡便的方法,窗體的設(shè)計和規(guī)劃不僅影響到它本身外觀的可觀賞性,而且對應(yīng)用程序的可操作性也起到很重要的作用.一個良好的用戶界面并不是只有專業(yè)的美術(shù)人員
58、才能設(shè)計出來,在大多數(shù)時候,這樣的界面設(shè)計都是由程序設(shè)計人員完成,因此了解用戶界面的設(shè)計原則,是每個程序設(shè)計人員都要做的事情。[9]</p><p> 本軟件包含10個窗體和5個模塊,基本上這些窗體的實現(xiàn)的功能都比較簡單,所以窗體里也不用多少個控件,在這里就主要介紹下登錄界面和主界面的設(shè)計要點。 </p><p><b> 登錄界面</b></p>
59、<p> 這是用戶使用此軟件首先看到的一個界面,所以對用戶來說這個界面的可用性和美觀性直接影響到對整個軟件的看法。</p><p> 首先暫且給此軟件命名為MY-IM,這樣聽起來比較直觀吧!想要在登錄的窗體標(biāo)題上顯示“MY-IM登錄”,只要把窗體屬性的Caption值改成“MY-IM登錄”</p><p> 即可。同時也可以在文字前加上圖標(biāo)(圖中沒有添加),這樣就顯得有
60、點特色。然后把窗體分成兩部分:操作方法文本說明和用戶信息輸入的控件放置。為了美觀起見,在文本說明輸入的前面加上一個圖標(biāo)(如圖3-1的“”);然后再輸入“歡迎使用MY-IM”和使用該軟件的方法。最好把這兩塊文本分成兩個標(biāo)簽,因為這樣的話后面程序用到的時候顯示得就比較清晰明了。另一部分要使用到的控件有標(biāo)簽、文本框、復(fù)選框和按鈕。“用戶名”、“密碼”和“服務(wù)器IP”這三組文字使用的是標(biāo)簽控件,因為這三組文字不需要改動,只是提示用戶后面文本框內(nèi)
61、需要輸入的相應(yīng)內(nèi)容。和下面的“記住密碼”用的都是復(fù)選框控件,同時為了方便用戶,把復(fù)選框放在輸入用戶名后,這樣用戶就可以及時地確認(rèn)自己是否為新用戶,減少了輸入的錯誤?!坝涀∶艽a”也一樣。其他兩個是按鈕,用戶輸入好信息后,如果沒錯誤,按繼續(xù)按鈕就可以進(jìn)入主界面;如果不需要登錄,按關(guān)閉就可以退出程序。按此步驟設(shè)計完成大致的圖如3-1所示:</p><p> 圖3-1 MY-IM登錄界面</p><
62、p><b> 主界面</b></p><p> 主界面是程序的核心,各個功能都是通過這個界面來連接完成的。這個窗體主要通過菜單控件來完成,總共包括三個菜單項:文件、工具和幫助。文件菜單里又包括登錄、修改密碼、修改個人信息、報表、個人狀態(tài)和關(guān)閉。登錄項在用戶登錄后顯示的是“注銷”;點擊修改密碼就會彈出修改密碼的窗體;修改個人信息就會彈出個人信息的窗體;報表的窗體里包括發(fā)送給服務(wù)器錯誤
63、、評論及投訴的報表;個人狀態(tài)顯示的是用戶目前的狀態(tài),分別用幾種顏色來表示:綠色表示在線,紅色表示忙碌,黃色表示離開,灰色表示隱身或離線。關(guān)閉就是關(guān)閉此軟件。工具菜單里包括發(fā)送消息、用戶信息、文件傳輸和添加刪除好友。這些都是通過調(diào)用相關(guān)的窗體來實現(xiàn)的。幫助菜單里顯示的是關(guān)于此軟件的一些說明。其他的有兩個快捷的按鈕,分別是用來發(fā)送和選擇用戶狀態(tài)的按鈕,因為想要在這兩個按鈕上添加圖標(biāo),所以寫上了“圖標(biāo)”兩個字,下圖只是表達(dá)一種效果;顯示登錄的
64、用戶自己的用戶名和用戶目前的狀態(tài)的標(biāo)簽及顯示好友列表的Treeview控件,這個控件的參數(shù)要在程序里設(shè)置,所以這里沒有添加相關(guān)的內(nèi)容;還有狀態(tài)欄,用來顯示各種提示的信息。</p><p> 根據(jù)這樣的思路,再對界面進(jìn)行一定的整合和排列后就得到如圖3-2這樣的效果。</p><p> 圖3-2 軟件主界面</p><p> 3.3 系統(tǒng)設(shè)計和功能的實現(xiàn)</
65、p><p> 3.3.1 各模塊的邏輯分析及設(shè)計</p><p> 前面介紹了軟件界面的設(shè)計,但光有界面還是遠(yuǎn)遠(yuǎn)不夠的,這樣不能實現(xiàn)任何的功能,所以還需要很重要的后臺支持,這個后臺就是程序代碼。下圖給出的是軟件的整體設(shè)計框架,這個軟件實現(xiàn)的功能都可以從圖中看出,下面就先來對各個模塊進(jìn)行分析和代碼編寫流程的設(shè)計。</p><p> 圖3-3 軟件的整體設(shè)計框架&l
66、t;/p><p><b> 用戶登錄模塊。 </b></p><p> 擁有合法(如:用戶名中不能包含空格等)用戶名的用戶,輸入與上次相同的密碼(如果是新用戶,只要在用戶名后選擇新用戶即可。注意:密碼中也不能包含空格?。缓筝斎雽?yīng)的服務(wù)器IP地址就可以通過客戶端登錄到服務(wù)器,服務(wù)器獲取客戶端的用戶名和網(wǎng)絡(luò)環(huán)境數(shù)據(jù),保存在用戶數(shù)據(jù)表中??蛻舳说卿浿螅瑢暮糜褦?shù)據(jù)
67、表中讀取好友,從在線用戶數(shù)據(jù)表中讀取在線用戶信息,從用戶基本信息數(shù)據(jù)表讀取好友基本數(shù)據(jù)。[10]下面先給出用戶登錄的邏輯圖,如圖3-4所示。</p><p> 圖3-4 用戶登錄邏輯過程</p><p> 根據(jù)圖3-4的邏輯過程,我們可以對用戶登錄模塊的代碼進(jìn)行編寫,代碼的編寫流程圖如圖3-5所示(這里默認(rèn)服務(wù)器已經(jīng)開啟,并且輸入的服務(wù)器IP地址正確)。</p><
68、p> 圖3-5 登錄模塊代碼編寫流程圖</p><p> 2、個人信息修改模塊</p><p> 首先向服務(wù)器發(fā)送修改個人信息的請求給服務(wù)器,服務(wù)器根據(jù)用戶名和相應(yīng)的指令查詢用戶的個人信息,然后調(diào)用服務(wù)器中存儲的用戶信息,顯示在用戶個人信息的窗體中,用戶如果要修改資料,就把用戶修改的資料保存下來存到服務(wù)器中,用戶也可以直接看到自己的信息已經(jīng)被修改了。 個人信息修改邏輯過程如圖3
69、-6所示。</p><p> 圖3-6 用戶信息修改邏輯過程</p><p><b> 密碼修改模塊</b></p><p> 用戶首先要記住自己的密碼,這樣也可以防止被他人隨意修改。同時為了保證用戶輸入的密碼是否符合用戶的要求,再輸入一次確認(rèn)密碼就可以保證密碼是用戶想要修改的結(jié)果,然后保存,同時向服務(wù)器發(fā)送密碼修改的請求,服務(wù)器就把修改
70、后的密碼保存下來。密碼修改模塊代碼編寫流程圖如圖3-7所示。</p><p> 圖3-7 密碼修改模塊代碼編寫流程圖</p><p><b> 發(fā)送報表模塊</b></p><p> 報表包括三類:錯誤、評論和投訴。首先拉一個文本框,還有三個按鈕,如果要發(fā)送,只需要在文本框中輸入要發(fā)送的內(nèi)容,然后選擇一個按鈕進(jìn)行發(fā)送,這樣,代碼里只要輸
71、入指令和相應(yīng)的內(nèi)容發(fā)送給服務(wù)器即可,發(fā)送完后清空文本框內(nèi)容,隱藏此窗體。 5、刪除好友模塊</p><p> 用戶刪除好友時,用戶在好友列表中選擇刪除對象并執(zhí)行刪除操作,系統(tǒng)會把該好友從好友列表中刪除,然后從好友數(shù)據(jù)表中刪除該用戶的好友記
72、錄,就完成了好友刪除操作。刪除好友模塊邏輯過程如圖3-8所示。</p><p> 圖3-8 刪除好友模塊邏輯過程</p><p><b> 6、添加好友模塊</b></p><p> 輸入用戶名后檢查是否存在此用戶,向服務(wù)器發(fā)送添加好友的指令和好友用戶名,服務(wù)器把好友添加到用戶好友數(shù)據(jù)表中,好友顯示在用戶好友列表里,同時顯示好友目前狀態(tài)。
73、添加好友模塊邏輯過程如圖3-9所示。</p><p> 圖3-9 添加好友模塊邏輯過程</p><p><b> 7、發(fā)送消息模塊</b></p><p> 先選擇要發(fā)送的對象,然后在RichText里輸入要發(fā)送的信息,從字體中選擇您想要的效果(可以對部分文字進(jìn)行設(shè)置,這樣就可以突出一些關(guān)鍵字),發(fā)送指令、輸入的信息及待接收的好友用戶名
74、給服務(wù)器,然后通過服務(wù)器再轉(zhuǎn)發(fā)給待接收的好友。發(fā)送消息模塊邏輯過程模塊邏輯過程如圖3-10所示。</p><p> 圖3-10 發(fā)送消息模塊邏輯過程</p><p> 8、接收消息模塊
75、
76、 </p><p> 顯示好友發(fā)送的消息,同時顯示發(fā)送的好友用戶名。如果要回復(fù)就輸入回復(fù)的信息,加上發(fā)送者用戶名,然后通過服務(wù)器轉(zhuǎn)發(fā)給對應(yīng)的好友。</p><p
77、><b> 9、文件傳輸模塊。</b></p><p> 這是即時通信軟件中添加的比較實用的功能。先選擇要傳輸文件的好友,然后通過服務(wù)器獲得對方的IP地址,選擇要發(fā)送的文件,準(zhǔn)備進(jìn)度條,然后等待對方確認(rèn)接收,對方確認(rèn)選定文件保存路徑后就可以開始接收,進(jìn)度條就開始滾動,直到接收方完全接收完文件,發(fā)送方同時也顯示文件完全發(fā)送,這樣文件傳輸就完成了。文件傳輸過程中不需要服務(wù)器的干預(yù),本程
78、序要實現(xiàn)的只是簡單的文本文件傳輸,而且是使用Winsock來通信,所以能傳輸?shù)奈募容^小。文件傳輸模塊邏輯過程如圖3-11所示。</p><p> 圖3-11 文件傳輸模塊邏輯過程</p><p> 3.3.2 系統(tǒng)代碼的編寫和功能的實現(xiàn)</p><p><b> 1、用戶登錄模塊</b></p><p> 這
79、個模塊需要完成用戶身份驗證、是否為新用戶、是否保存密碼三個方面的處理。首先要做的是判斷輸入的用戶名、密碼是否符合規(guī)定的格式,代碼如下:</p><p> If InStr(1, Text1.Text, Chr(32)) Or InStr(1, Text2.Text, Chr(32)) Then</p><p> MsgBox "您的用戶名和密碼中不允許有空格,請重新輸入!&q
80、uot;</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> If Text1.Text = "" Then</p><p> MsgBox "請輸入您的用戶名!"</p>
81、<p><b> Exit Sub</b></p><p><b> End If</b></p><p> If Text2.Text = "" Then</p><p> MsgBox "請輸入您的密碼!"</p><p><b&
82、gt; Exit Sub</b></p><p><b> End If</b></p><p> If Text3.Text = "" Then</p><p> MsgBox "請輸入服務(wù)器IP地址!"</p><p><b> Exit Sub
83、</b></p><p><b> End If</b></p><p> 服務(wù)器IP指的是作為服務(wù)器的機器的IP,同時要和作為服務(wù)器的機器處于同一個局域網(wǎng)中。同時服務(wù)器還要判斷用戶輸入的用戶名是否存在或是否被服務(wù)器處理了,如凍結(jié)帳號;判斷輸入的密碼是否和服務(wù)器上次記錄的密碼對應(yīng)。</p><p> 如果選擇了新用戶,說明服務(wù)
84、器中沒有用戶的信息,那系統(tǒng)就會給新用戶創(chuàng)建一個文件來存儲用戶信息。先對信息中的Name、Sex、Country等進(jìn)行初始化,保存在一個文件里面,如果用戶對信息進(jìn)行修改,那么這個文件中存儲的信息也相應(yīng)地改變。代碼如下:</p><p> MyPersonalInfo.Name = Nickname</p><p> MyPersonalInfo.Sex = "男"&l
85、t;/p><p> MyPersonalInfo.Country = "中華人民共和國"</p><p> MyPersonalInfo.BirthDay = "1984.1.1"</p><p> MyPersonalInfo.Age = "24"</p><p> MyPer
86、sonalInfo.Mail = "j123@126.com"</p><p> MyPersonalInfo.About = "空空如也...."</p><p> Open "Info_" & Nickname & ".dat" For Random As gFileNum Len =
87、Len(MyPersonalInfo)</p><p> Put #gFileNum, 1, MyPersonalInfo</p><p> Close #gFileNum</p><p> 如果選擇了保存密碼,系統(tǒng)就會給用戶創(chuàng)建一個INI文件來保存設(shè)置,如果沒有選擇保存密碼,則會判斷出錯,提示“調(diào)用API函數(shù)時發(fā)生錯誤”,但對整個程序并沒有什么影響。Save
88、INI是模塊中定義的公用函數(shù),如果具體代碼如下:</p><p> Public Sub SaveINI ()</p><p> Dim lngResult As Long</p><p> Dim strFileName</p><p> strFileName = App.Path & "\Settings.in
89、i" 'Declare your ini file!</p><p> lngResult = WritePrivateProfileString(KeySection, _</p><p> KeyKey, KeyValue, strFileName)</p><p> If lngResult = 0 Then</p>&l
90、t;p><b> '出現(xiàn)錯誤</b></p><p> Call MsgBox("調(diào)用API函數(shù)時發(fā)生錯誤", vbExclamation)</p><p><b> End If</b></p><p><b> End Sub</b></p>
91、<p> 個人信息修改模塊[11]</p><p> 首先要做的是打開信息修改這個窗體時要調(diào)用服務(wù)器中存儲的用戶信息,可由gFileNum = FreeFile這句代碼來實現(xiàn),如果用戶要修改信息,那信息修改完成后要保存起來,然后通過發(fā)送指令和相應(yīng)的內(nèi)容給服務(wù)器,實現(xiàn)的代碼如下:</p><p> Dim Temp4 As String</p><p&g
92、t; Temp4 = Replace(RichTextBox1.Text, vbCrLf, "//crlf\\")</p><p> MyPersonalInfo.Name = Text5.Text '保存修改的信息</p><p> MyPersonalInfo.Sex = Combo1.Text</p><p&
93、gt; MyPersonalInfo.Country = Text1.Text</p><p> MyPersonalInfo.BirthDay = Text2.Text</p><p> MyPersonalInfo.Age = Text3.Text</p><p> MyPersonalInfo.Mail = Text4.Text</p>
94、<p> MyPersonalInfo.About = Temp4</p><p> Open "Info_" & Nickname & ".dat" For Random As gFileNum Len = Len(MyPersonalInfo)</p><p> Put #gFileNum, 1, MyPerson
95、alInfo</p><p> Close #gFileNum</p><p> MyIM.Winsock1.SendData ".SaveInfo " & Connect.Text1.Text & " " & Combo1.Text & " " & Text1.Text & &
96、quot; " & Text2.Text & " " & Text3.Text & " " & Text4.Text & " " & Text5.Text & " " & Temp4</p><p><b> Me.Hide</b>
97、;</p><p><b> 密碼修改模塊</b></p><p> 首先要判斷輸入的原始密碼是否正確,再判斷輸入的修改后的密碼和確認(rèn)密碼是否一致,如果正確那就保存修改后的密碼,然后發(fā)送給服務(wù)器,對各個文本框置空,實現(xiàn)的代碼如下:</p><p> Private Sub btnChange_Click()</p><
98、p> If Text1.Text <> MyPwd Then </p><p> '如果輸入的初始密碼和登錄時輸入的不一樣則跳出提示框</p><p> MsgBox "您輸入的舊密碼不正確!"</p><p><b> Exit Sub</b></p><p
99、><b> End If</b></p><p> If Text2.Text <> Text3.Text Then </p><p> '如果修改后的密碼和確認(rèn)密碼不一樣則跳出提示框</p><p> MsgBox "兩次輸入密碼不符,請重新輸入!"</p><p&
100、gt;<b> Exit Sub</b></p><p><b> End If</b></p><p> If Text2.Text = "" Then</p><p> MsgBox "密碼無修改!"</p><p><b> Exit
101、 Sub</b></p><p><b> Else</b></p><p> MyPwd = Text2.Text </p><p> '密碼正確修改后就把Text2中的內(nèi)容替代原來的密碼</p><p> MyIM.Winsock1.SendData ".ChangePass
102、word " & " " & Text2.Text</p><p><b> End If</b></p><p> Text1.Text = "" '置空</p><p> Text2.Text = ""</p><p&g
103、t; Text3.Text = ""</p><p><b> Me.Hide</b></p><p><b> End Sub</b></p><p> 發(fā)送報表模塊[12]</p><p> 主要是三個方面的選擇:評論、錯誤和投訴,選擇了確定的安鈕之后,就可以向服務(wù)
104、器發(fā)送信息了,再對文本框置空,實現(xiàn)的代碼如下:</p><p> MyIM.Winsock1.SendData ".Report Complaint " & Text1.Text</p><p> Text1.Text = ""</p><p><b> Me.Hide</b></p&
105、gt;<p><b> 刪除好友模塊</b></p><p> 從好友列表中選擇要刪除的好友,發(fā)送指令給服務(wù)器即可,代碼如下:</p><p> Private Sub mnuBuddyRemove_Click()</p><p> On Error Resume Next</p><p> Wi
106、nsock1.SendData ".RemoveBuddy " & TreeView1.SelectedItem.Key</p><p><b> End Sub</b></p><p><b> 添加好友模塊</b></p><p> 首先要對待添加的用戶進(jìn)行驗證,判斷這個用戶是否存在,
107、添加了之后再好友列表中要顯示該添加的好友,服務(wù)器中也要進(jìn)行相應(yīng)的保存,代碼如下:</p><p> Private Sub mnuBuddyAdd_Click()</p><p> Dim Temp As String</p><p> Temp = InputBox("請輸入好友名字!", "添加好友", "
108、Buddy")</p><p> '提示 標(biāo)題 默認(rèn)的文本框內(nèi)容</p><p> If Temp = "" Then</p><p><b> Exit Sub</b></p><p><b> Else</b></p><p>
109、; Winsock1.SendData ".AddBuddy " & Connect.Text1.Text & " " & Temp</p><p><b> End If</b></p><p><b> End Sub</b></p><p><
110、;b> 發(fā)送消息模塊</b></p><p> 這個模塊要實現(xiàn)的功能有設(shè)置字體、消息輸入框(即RichTextBox1)大小的變化及消息的發(fā)送,字體包括大小、粗體、斜體和下劃線等,在這里就不列舉代碼了。下面給出消息輸入框大小隨窗體改變的代碼:</p><p> RichTextBox1.Height = Me.ScaleHeight - Picture2.Heigh
111、t - 850 </p><p> RichTextBox1.Width = Me.ScaleWidth</p><p> 這樣就可以實現(xiàn)當(dāng)窗體變化時,消息輸入框也隨著變化,不然就算把窗體拉大,消息輸入框也不可能增大,那就達(dá)不到用戶想要的效果。消息發(fā)送其實就把輸入的文字加上指令及接收者給服務(wù)器就可以,服務(wù)器再轉(zhuǎn)發(fā)給接收方,所以客戶端要做的由這句代碼就可以實現(xiàn):</p>&
112、lt;p> RichTextBox2.Text = ".msg " & Replace(RichTextBox1.TextRTF, vbCrLf, "//crlf\\") & " " & RecieversID </p><p><b> 接收消息模塊</b></p><p>
113、; 與發(fā)送消息模塊不同的就是接收消息要實現(xiàn)的一個功能是顯示新消息,不過消息的顯示是自動彈出式的,所以不需要編寫代碼;還有一個就是回復(fù),其實按回復(fù)的按鈕直接就彈出一個發(fā)送消息的窗體就可以了,由下面兩句代碼來實現(xiàn):</p><p> Dim NewSendMessage As New SendMessage</p><p> NewSendMessage.Show</p>
114、<p> New SendMessage就是創(chuàng)建SendMessage這個窗體的實例。同時也要顯示發(fā)送方的用戶名,由這句代碼NewSendMessage.Label2.Caption = SenderName來實現(xiàn)。</p><p><b> 10、文件傳輸模塊</b></p><p> 因為文件的接收和發(fā)送是一個完成的過程,所以我們把接收和發(fā)送文件穿
115、插起來一起描述。這兩塊主要需要實現(xiàn)的有進(jìn)度條的滾動、發(fā)送文件信息和對方接收文件等功能。進(jìn)度條初始值為0,當(dāng)文件開始傳輸時,進(jìn)度條根據(jù)發(fā)送的文件字節(jié)數(shù),調(diào)整進(jìn)度條,同時顯示文件發(fā)送的程度(如100%),代碼如下:</p><p> ProgressBar1.Max = sizeOfFile</p><p> ProgressBar1.Min = 0</p><p>
116、; ProgressBar1.value = ProgressBar1.Min</p><p> ProgressBar1.Visible = True</p><p> sizeOfFileSent = sizeOfFileSent + blockSize</p><p> On Error Resume Next</p><p>
117、 ProgressBar1.value = sizeOfFileSent</p><p> compLabel.Caption = sizeOfFileSent & " / " & sizeOfFile & " 發(fā)送. " & Int(sizeOfFileSent / sizeOfFile * 100) & "%&quo
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于cs結(jié)構(gòu)的即時通信系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 基于cs結(jié)構(gòu)的即時通信系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)基于web的im即時通信系統(tǒng)的設(shè)計與實現(xiàn)
- 基于vc的簡單即時通信軟件開發(fā)【畢業(yè)設(shè)計】
- 即時通訊聊天系統(tǒng) 畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---局域網(wǎng)即時通信軟件設(shè)計
- 即時通訊畢業(yè)設(shè)計--企業(yè)內(nèi)部即時通訊系統(tǒng)的設(shè)計
- linux下基于c++語言開發(fā)的即時通信軟件畢業(yè)設(shè)計
- [優(yōu)秀畢業(yè)設(shè)計精品] 基于.net的即時通訊系統(tǒng)
- 基于WebSocket的移動即時通信系統(tǒng).pdf
- 基于即時通信的物流管理系統(tǒng)設(shè)計.pdf
- 基于android平臺即時通信系統(tǒng)的設(shè)計與實現(xiàn)
- 即時通信系統(tǒng)設(shè)計與實現(xiàn)
- 基于android系統(tǒng)的即時通信系統(tǒng)研究
- 基于Jabber的即時通信系統(tǒng)的設(shè)計和實現(xiàn).pdf
- 即時通信工具畢業(yè)論文
- 基于混合加密即時通信系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于GPRS的即時通信系統(tǒng)協(xié)議設(shè)計與開發(fā).pdf
- 基于Jabber的即時通信系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 即時通訊工具畢業(yè)設(shè)計
評論
0/150
提交評論