版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p> 題 目 基于P2P網(wǎng)絡模型的即時通信軟件的研制</p><p><b> 學 生 </b></p><p><b> 指導教師 </b></p><p><b> 年
2、 級 </b></p><p> 專 業(yè) 計算機科學與技術(shù)</p><p> 系 別 計算機科學系</p><p><b> 計算機科學系</b></p><p><b> 2016年5月</b></p><p><b> 鄭
3、重聲明</b></p><p> 本人的畢業(yè)論文(設(shè)計)是在指導教師老師的指導下獨立撰寫完成的。如有剽竊、抄襲、造假等違反學術(shù)道德、學術(shù)規(guī)范和侵權(quán)的行為,本人愿意承擔由此產(chǎn)生的各種后果,直至法律責任,并愿意通過網(wǎng)絡進行公眾的監(jiān)督。特此鄭重聲明。</p><p> 畢業(yè)論文(設(shè)計)作者簽名:</p><p> 年 月 日</p>
4、;<p><b> 目 錄</b></p><p><b> 標題1</b></p><p><b> 摘要1</b></p><p><b> 1引言1</b></p><p> 1.1 開發(fā)背景及意義1</p
5、><p> 1.1.1 背景及意義1</p><p> 1.1.2 國內(nèi)外企業(yè)級通信系統(tǒng)的發(fā)展現(xiàn)狀1</p><p><b> 2可行性分析2</b></p><p> 2.1 技術(shù)可行性分析2</p><p> 2.2 經(jīng)濟可行性分析2</p><p&
6、gt; 2.3 操作可行性2</p><p> 2.4 實現(xiàn)技術(shù)分析2</p><p><b> 3需求分析3</b></p><p> 3.1 軟件功能需求3</p><p> 3.2 系統(tǒng)開發(fā)環(huán)境配置需求4</p><p><b> 4數(shù)據(jù)庫設(shè)計4<
7、/b></p><p> 4.1 數(shù)據(jù)庫分析4</p><p> 4.1.1 數(shù)據(jù)庫概述4</p><p> 4.1.2 軟件實現(xiàn)的E-R圖5</p><p> 4.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計6</p><p><b> 5軟件功能設(shè)計7</b></p>&
8、lt;p> 5.1 登錄注冊設(shè)計7</p><p> 5.2 軟件首頁界面設(shè)計10</p><p> 5.3 好友查找及添加設(shè)計10</p><p> 5.4 好友聊天設(shè)計11</p><p> 5.5 刪除好友設(shè)計24</p><p> 5.6 群聊設(shè)計24</p><
9、;p><b> 6 結(jié) 論25</b></p><p><b> 參考文獻26</b></p><p><b> 致 謝27</b></p><p><b> 外文頁28</b></p><p> 基于P2P網(wǎng)絡模型的即時通信軟
10、件的研制</p><p><b> 王莉鑫</b></p><p> 摘 要 隨著現(xiàn)代通信技術(shù)的日益成熟,越來越多的企業(yè)由于溝通需求,紛紛考慮搭建局域網(wǎng)下的通信系統(tǒng),來解決平時工作交流和溝通的問題。企業(yè)級通信軟件成本低,使用方便,信息傳輸速度快,同時因為基于局域網(wǎng)下的通信交互,可以做到資源的共享和公告信息的下達。即時通信軟件的研究解決了信息通信與用戶管理的
11、有機統(tǒng)一,從而提高了企業(yè)管理的智能化與管理效率。</p><p> 此軟件采用c#作為設(shè)計語言,使用VS2010作為開發(fā)和運行工具。研究的是一個小型的P2P即時通信軟件,通過局域網(wǎng)內(nèi)IP地址建立通信連接,實現(xiàn)用戶的登錄,注冊及驗證,添加、查找、刪除好友,與好友語音、視頻,群的創(chuàng)建,查找,添加等功能,可以很好的解決公司內(nèi)部通信的問題,它將局域網(wǎng)資源有效的利用起來,完成公司整體通訊平臺的架構(gòu)。</p>
12、<p> 關(guān)鍵詞 內(nèi)部通信 c# 用戶 局域網(wǎng)</p><p><b> 1引言</b></p><p> 1.1 開發(fā)背景及意義</p><p> 1.1.1 背景及意義</p><p> 隨著信息技術(shù)在中國的發(fā)展,越來越多的人了解到信息傳播的重要性。從最初的口頭相傳到如今的一個手
13、機行天下,人們已經(jīng)逐漸熟悉和依賴上便捷高效的通信軟件,通信互聯(lián)網(wǎng)產(chǎn)業(yè)日漸崛起正逐漸成為中國信息產(chǎn)業(yè)的領(lǐng)頭羊,一大批基于信息產(chǎn)業(yè)開發(fā)的公司相繼上市。與此同時,信息技術(shù)的發(fā)展更是呈現(xiàn)出新特點,對信息安全和信息的傳輸速率的要求也不斷上升,這使得企業(yè)級即時通信軟件應運而生,讓企業(yè)在安全、易于管理、協(xié)調(diào)嚴謹?shù)墓芾砟J较掠行У貍鬟_和交流信息。</p><p> 企業(yè)級即時通信軟件是目前公司內(nèi)部員工上網(wǎng)交流使用率最高的軟件之
14、一,公司內(nèi)部通信系統(tǒng)可以使公司內(nèi)部員工識別其他用戶并與之交流。大多數(shù)企業(yè)通常都具備一個獨立的局域網(wǎng)硬件環(huán)境,并在此基礎(chǔ)上連入萬維網(wǎng)。然而公司每年在接入互聯(lián)網(wǎng)時需要承擔很巨大的網(wǎng)絡費用,因此,可以設(shè)計一款在局域網(wǎng)環(huán)境下運行的通信軟件,在保證通信和信息管理功能實現(xiàn)的同時減少支出,適應公司的本身辦公環(huán)境。除此之外,由于局域網(wǎng)具備與外界網(wǎng)絡物理隔絕的特點,因此可以有效地降低被外界網(wǎng)絡和商業(yè)黑客攻擊的危險,保證了通信環(huán)境下的安全性。</p&
15、gt;<p> 1.1.2 國內(nèi)外企業(yè)級通信系統(tǒng)的發(fā)展現(xiàn)狀</p><p> 企業(yè)級的即時通信系統(tǒng),采用了UDP協(xié)議和數(shù)據(jù)報來實現(xiàn)。廣域網(wǎng)下的即時通信系統(tǒng),一般分為TCP通信和UDP通信兩種,TCP通信的優(yōu)勢在于能夠保證消息的準確收發(fā),UDP通信的優(yōu)勢在于具有群發(fā)和廣播的功能。相關(guān)的開發(fā)技術(shù)和相對應的產(chǎn)品已經(jīng)得到人們的肯定,人們在ICQ和MSN軟件上進行注冊和登陸,就可以享受這些由國外大互聯(lián)網(wǎng)
16、公司開發(fā)的優(yōu)秀的即時聊天軟件。國產(chǎn)的即時通信軟件起步較晚,但在非常短的時間內(nèi)崛起,如即時通信軟件的巨頭QQ騰訊公司,同時推出同類型軟件的還有新浪公司的UC,上述軟件已經(jīng)占據(jù)了中國即時聊天市場的大部分份額 。這些軟件在使用方面和用戶體驗上都各有千秋,但遺憾的是,在企業(yè)級即時通信領(lǐng)域還不是很廣泛,仍具有很大的開發(fā)空間。</p><p> 目前,越來越多的軟件公司開始著力開發(fā)具有企業(yè)特色的辦公類型通信軟件,主要包括:
17、Imo云辦公室、騰訊公司的針對公司開發(fā)的RTX軟件,免費版且應用比較普遍的有飛秋等。通過一系列的市場調(diào)研可以清楚地看到,中國在企業(yè)級通信系統(tǒng)設(shè)計方面仍存在很大的不足,比如對于公司信息安全性的問題導致很多公司寧愿花大價錢從國外訂購昂貴的通信軟件,也不愿使用這些公司開發(fā)的軟件。免費版的飛秋在市場上已經(jīng)樹立起一個很好的口碑,但相對應的是后續(xù)開發(fā)的不足和系統(tǒng)方面的BUG,整體界面不夠美觀,操作繁瑣,使操作者感覺不舒適。任何一款面向用戶開發(fā)的軟件
18、都應該考慮到用戶的使用感受,而且,企業(yè)級即使通信軟件除了需要完成基本的即時通信功能外,還可以實現(xiàn)通訊人員列表的維護、實時搜索IP段內(nèi)的所有用戶、訪問公共資源、群發(fā)消息和信史發(fā)送等功能。功能的強大和使用的方便相結(jié)合,必定會帶來相當可觀的用戶群體。綜合這些方面的考慮,其實國內(nèi)的企業(yè)即時通信仍是占了一份很大的市場,只是由于一部分廠商的粗制濫造和開發(fā)系統(tǒng)的不認真仔細,導致了這其中很大部分市場份額被國外搶走。因此,開發(fā)出一種符合市場要求,更加貼切
19、企業(yè)需要的內(nèi)部通信軟件勢在必行。</p><p><b> 2 可行性分析</b></p><p> 2.1 技術(shù)可行性分析</p><p> 技術(shù)可行性是最重要的部分也是最難的部分,用SQL Server來后臺數(shù)據(jù)庫的管理體系,這是發(fā)揮支柱作用,解決數(shù)據(jù)倉庫和數(shù)據(jù)庫程序等,這些應用程序可以提供對數(shù)據(jù)管理的有力支持和數(shù)據(jù)庫中的數(shù)據(jù)提供有
20、效的管理,使用有效的措施來達到數(shù)據(jù)完整、數(shù)據(jù)安全和數(shù)據(jù)可靠易用的目的。編程平臺采用Visual Studio 2010它已被證明是一個極其強大和成功的開發(fā)平臺,其成熟穩(wěn)定能夠充分保證軟件設(shè)計的順利進行。</p><p> 2.2 經(jīng)濟可行性分析</p><p> 經(jīng)濟可行性的分析主要針對的是軟件項目開發(fā)時所有的預算和軟件實施后帶來的經(jīng)濟效益進行分析。本軟件功能強大,操作簡單,成本低廉
21、,無需過高配置的運行環(huán)境,因此開發(fā)成本和預算都可以接受。本軟件可以有效地提高學校內(nèi)部的工作效率,節(jié)省寶貴的時間,不占用過多的資源,無需對使用者進行功能上的講解,有助于學校有效地管理日常事務和下達公告。因此,在經(jīng)濟上這款軟件也是可適用的和可行的。本軟件是畢業(yè)設(shè)計沒有商業(yè)因素,學校為我們提供了良好的基礎(chǔ)設(shè)施,如:機房,電腦,軟件開發(fā)環(huán)境等等,如果遇到了技術(shù)難題也可以請老師指導。因此開發(fā)設(shè)計學校通信系統(tǒng)并不需要開發(fā)經(jīng)費,在經(jīng)濟上完全可實行。&
22、lt;/p><p><b> 2.3 操作可行性</b></p><p> 該即時通信軟件界面簡潔,操作簡單明了,類似于大家熟悉使用的QQ,公司員工經(jīng)過簡單的培訓就可以熟練的操作。并且該軟件可以實現(xiàn)公司的內(nèi)部交流,保密性良好,接收效率高,具有即時行。該軟件成本低,操作靈活簡單,本軟件在操作可行上完全沒有問題。綜上所述此軟件的開發(fā)完全是可行的。</p>&
23、lt;p> 2.4 實現(xiàn)技術(shù)分析</p><p> 2.4.1 運用P2P技術(shù)實現(xiàn)過程分析</p><p> 在P2P技術(shù)尚未風行之前,很多企業(yè)級應用采用C/S或者B/S架構(gòu),在傳統(tǒng)的C/S架構(gòu)應用程序中,客戶端(或者叫客戶機)與服務器有明確的分界。客戶端軟件向服務器發(fā)出請求,服務器存放共享資源并對客戶端請求作出響應。顯然,在這種架構(gòu)下,客戶機越多,服務器的壓力越大。C/S架構(gòu)
24、如圖2-1所示:</p><p> 圖2-1 C/S架構(gòu)</p><p> P2P技術(shù)與傳統(tǒng)的C/S架構(gòu)不同,使用P2P技術(shù)實現(xiàn)的每個計算機節(jié)點既是客戶端,也是服務器,其功能的提供是對等的,每個計算機節(jié)點根據(jù)自己的計算能力,同時承擔了一部分服務器的功能。安裝了相同P2P軟件的計算機之間可以直接進行數(shù)據(jù)通信,而不需要依賴于專門的服務器。P2P架構(gòu)如圖2-2所示:</p>&
25、lt;p> 圖2-2 P2P架構(gòu)</p><p> 即時通信軟件具體的實現(xiàn)步驟:</p><p> 用戶A通過客戶端輸入自己的賬號和密碼登錄到服務器,服務器通過用戶A注冊的數(shù)據(jù)庫驗證身份,如果驗證成功,則同意登錄。</p><p> 通過用戶A的好友列表信息,服務器將用戶A在線信息發(fā)送到好友列表中在線的好友。</p><p>
26、 服務器將在線好友的信息發(fā)送給用戶A,使用戶A可以看到好友的狀態(tài)。</p><p> 如果用戶A想要跟好友聊天,直接在聊天界面上發(fā)送消息即可。用戶B看見信息后可以恢復用戶A并予以顯示。</p><p><b> 3 需求分析</b></p><p> 3.1 軟件功能需求</p><p> 軟件功能需求就是
27、該軟件是否存在可以滿足用戶需求的功能。為了更大程度的滿足用戶,必須設(shè)計出組成這個系統(tǒng)的所有程序和文件(包括數(shù)據(jù)庫)?;谄髽I(yè)通信這一前提,功能的實現(xiàn)應該與企業(yè)辦公模式掛鉤,避免過多的無關(guān)信息,比如:娛樂信息等。信息傳達明確快速,界面友好簡單,容易操作。根據(jù)企業(yè)內(nèi)部通信的實際需求,軟件需要開發(fā)以下功能。</p><p> (1)軟件界面友好簡單、整潔美觀。</p><p> (2)具有完
28、善的消息顯示、消息提示和用戶信息顯示。</p><p> (3)支持局域網(wǎng)下通信,支持UDP和數(shù)據(jù)報不同方式下的消息傳輸。</p><p> (4)支持發(fā)送消息功能,保證消息傳輸?shù)臏蚀_性和安全性。</p><p> (5)支持窗體最小化,支持托盤操作,保證電腦界面干凈整潔。</p><p> (6)使用獨立的本地數(shù)據(jù)庫,保證軟件的可移
29、植性和拓展性。</p><p> (7)支持自動搜索和手動添加IP或IP段內(nèi)的所有通信用戶。</p><p> (8)提供用戶信息的增刪改查。</p><p> 除了滿足以上的功能實現(xiàn)之外,還要考慮到商業(yè)文件和機密的安全性。如通訊之所以不會選擇使用QQ和MSN的原因,不僅是因為娛樂軟件會大量增加私人時間,降低辦公效率,更重要的一點是病毒和木馬的猖獗會嚴重威脅到
30、公司的信息安全。即便是在局域網(wǎng)下的通信軟件,相對于廣域網(wǎng)來說,被入侵和盜竊的風險更小,但誰又能說那一定是不存在的呢?因此,可以考慮在系統(tǒng)功能和模塊的設(shè)計上采用信息攔截,攔截垃圾消息和病毒木馬,為信息通信和機密文件披上保護衣。其次,通信信息能否一定送達至接收方,發(fā)送方如何知道信息已送達,也是一項需要完善的功能。信息交互必須保證百分之百的傳送成功,否則信息通信便喪失了實用性。</p><p> 3.2 系統(tǒng)開發(fā)環(huán)
31、境配置需求</p><p> 使用語言及環(huán)境:c#,vs2010;</p><p> 數(shù)據(jù)庫:sql server;</p><p> 操作系統(tǒng):Windows 7 ;</p><p><b> 運行平臺:vs。</b></p><p> 3.3 軟件功能設(shè)計</p>&
32、lt;p> 根據(jù)大多數(shù)企業(yè)對通信系統(tǒng)的要求,綜合考慮可行性和必要性的分析,本軟件可以實現(xiàn)以下功能。</p><p> (1)操作簡單方便、界面美觀整潔。</p><p> (2)完成基本的通信功能,同時開發(fā)出更實際的群發(fā)和離線下的信史功能。</p><p> (3)通信窗口顯示對方IP信息和用戶名。</p><p> (4)局
33、域網(wǎng)下的IP和IP段內(nèi)的用戶搜索和自動搜索。</p><p> (5)設(shè)計軟件托盤功能,具有訪問服務器,打開界面和退出三大功能。</p><p> (6)客戶端和服務器一體化,節(jié)省資源,同時方便后續(xù)的功能拓展。</p><p> (7)更方便訪問公共資源和公共程序,保證了資料和文件的保密性。</p><p> (8)軟件運行穩(wěn)定、安全
34、可靠。</p><p><b> 4 數(shù)據(jù)庫設(shè)計</b></p><p><b> 4.1 數(shù)據(jù)庫分析</b></p><p> 4.1.1 數(shù)據(jù)庫概述</p><p> SQLSever具有很大的靈活性,改變了以往傳統(tǒng)的數(shù)據(jù)放置方式,將相關(guān)數(shù)據(jù)保存在不同的表中,通過表之間的關(guān)聯(lián)性,實現(xiàn)數(shù)
35、據(jù)的管理。由于SQLSever具有小體積,高速度,低成本以及源代碼開放等優(yōu)點,SQLSever成為大多數(shù)中小型網(wǎng)站的首選。</p><p> 雖然SQLSever存在著安全系統(tǒng)以及缺乏標準的RI機制等缺點并且與其他大型數(shù)據(jù)庫相比,仍存在著規(guī)模比較小,功能實現(xiàn)存在著限制以及效率較低等不足之處但是這都不影響其歡迎程度,SQLSever具有以下特性:</p><p> 多處理器:SQLSev
36、er采用多種數(shù)據(jù)類型,支持多個處理器共同處理,具有較快的處理速度;</p><p> 可移植性:在不同的操作系統(tǒng)下均可以正確運行,比如Window,也可以在不同的運行環(huán)境下正確的運行;</p><p> 多線程:SQLSever為用戶提供便利的服務,使進程切換迅速,CPU的利用率高,系統(tǒng)資源的利用率高,充分利用CPU資源;</p><p> 安全性:在客戶端與
37、服務器傳輸信息的過程中,SQLSever通過口令系統(tǒng)保證彼此間的所有信息的傳送都被嚴格的加密,通過加密解密機制保證系統(tǒng)的安全性;</p><p> 容量大:SQLSever數(shù)據(jù)庫,存儲空間大,不必擔心存放的記錄數(shù)據(jù)空間不夠問題;</p><p> 穩(wěn)定性:SQLSever的內(nèi)存分配系統(tǒng)穩(wěn)定性高;</p><p> 管理方式多樣性:SQLSever的管理方式多樣
38、性,擁有不同的管理方式,如圖形管理;</p><p> 方便性:SQLSever具有強大的查詢功能,支持規(guī)范的查詢語言,優(yōu)化查詢算法,對相關(guān)數(shù)據(jù)查詢詳細,具有方便性,提高查詢速度。</p><p> 4.1.2 軟件實現(xiàn)的E-R圖</p><p> 該系統(tǒng)可分為用戶、群組、聊天消息記錄三個實體,用戶實體主要記錄和修改用戶方面的操作,群組實體主要記錄和修改群內(nèi)
39、成員方面的操作,聊天消息記錄實體主要是記錄用戶之間交流消息方面的操作。</p><p><b> ?。?)用戶實體</b></p><p> 用戶實體包括通信系統(tǒng)中所有的用戶群體。在這里,本機用戶和好友界面的用戶是一樣的,同屬于一種用戶實體。用戶信息包括:用戶賬號,用戶密碼,用戶姓名,好友,個性簽名,頭像,群組信息,創(chuàng)建時間和默認好友分類還有相關(guān)的提示信息。如圖4.
40、1所示。</p><p> 圖4-1 用戶實體E-R圖</p><p><b> ?。?)群組實體</b></p><p> 群組實體是指用戶創(chuàng)建的群,包括:群賬號、群名稱、群創(chuàng)建者、群公告、群成員和創(chuàng)建時間。如圖4.2所示。</p><p> 圖4-2 用戶實體E-R圖</p><p>&
41、lt;b> ?。?)消息記錄實體</b></p><p> 消息記錄實體是指存放聊天記錄的地方,其中包括兩個用戶間的聊天記錄和群組成員間的聊天記錄,具體包括:聊天數(shù)目、用戶賬號、好友賬號、產(chǎn)生時間、聊天內(nèi)容和消息類型。具體如下圖4.3所示。</p><p> 圖4-3 消息記錄實體E-R圖</p><p> 4.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計&l
42、t;/p><p> 本軟件中創(chuàng)建了一個名為IM2016的數(shù)據(jù)庫。根據(jù)數(shù)據(jù)庫實體的分析,應該設(shè)計三個數(shù)據(jù)表,分別為用戶信息表dbo.GGUser、群組信息表dbo.GGGroup和消息記錄表dbo.ChatMessageRecord</p><p> ?。?)dbo.GGUser(用戶信息表)</p><p> 用戶信息表存儲的是用戶的所有信息,每個字段代表用戶的一個
43、屬性,共同組成用戶的實體。表dbo.GGUser的結(jié)構(gòu)圖如表4-1所示。</p><p> 表4-1 用戶信息表結(jié)構(gòu)圖</p><p> ?。?)dbo.GGGroup(群組信息表)</p><p> 群組信息表主要用來保存群組的信息,群組信息表dbo.GGGroup的結(jié)構(gòu)如下表4-2所示。</p><p> 表4-2群組信息表結(jié)構(gòu)圖&
44、lt;/p><p> (3)dbo.ChatMessageRecord(消息記錄表)</p><p> 消息記錄表主要是存儲群組成員間的聊天記錄和用戶之間的消息記錄。消息記錄表dbo.ChatMessageRecord的結(jié)構(gòu)如下表4-3所示。</p><p> 表4-3消息記錄表結(jié)構(gòu)圖</p><p><b> 5軟件功能設(shè)計&
45、lt;/b></p><p> 軟件的功能設(shè)計是軟件開發(fā)最核心的內(nèi)容,企業(yè)級的即時通信軟件需要實現(xiàn)公司員工的登錄注冊、傳輸文件、聊天等功能。以下是該軟件的一些具體的功能設(shè)計。</p><p> 5.1 登錄注冊設(shè)計</p><p> 軟件的運行和操作離不開具體的用戶名注冊和登錄,這里的注冊頁面可以進行頭像選擇,填寫相關(guān)的數(shù)據(jù)信息進行注冊,如圖5-1所示。
46、</p><p><b> 圖5-1登錄注冊圖</b></p><p> 注冊過程代碼如下所示:</p><p> #region RegisteredUser</p><p> private GGUser registeredUser = null;</p><p> public
47、GGUser RegisteredUser</p><p><b> { get</b></p><p><b> {</b></p><p> return this.registeredUser;</p><p><b> }</b></p><
48、p><b> } </b></p><p> #endregion </p><p> private void skinButton1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> this.
49、DialogResult = System.Windows.Forms.DialogResult.Cancel; </p><p><b> }</b></p><p> private void btnRegister_Click(object sender, EventArgs e)</p><p><b&g
50、t; {</b></p><p> string userID = this.skinTextBox_id.SkinTxt.Text.Trim();</p><p> if (userID.Length == 0)</p><p><b> {</b></p><p> this.skinTextB
51、ox_id.SkinTxt.Focus();</p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p><p> MessageBoxEx.Show("帳號不能為空!");</p><p><b> return;</b></
52、p><p><b> }</b></p><p> string pwd = this.skinTextBox_pwd.SkinTxt.Text ;</p><p> if (pwd != this.skinTextBox_pwd2.SkinTxt.Text)</p><p><b> {</b>
53、;</p><p> MessageBoxEx.Show("兩次輸入的密碼不一致!");</p><p> this.skinTextBox_pwd.SkinTxt.SelectAll() ;</p><p> this.skinTextBox_pwd.SkinTxt.Focus();</p><p> this.
54、DialogResult = System.Windows.Forms.DialogResult.None;</p><p><b> return;}</b></p><p><b> try</b></p><p><b> {</b></p><p> GGUse
55、r user = new GGUser(userID, SecurityHelper.MD5String2(pwd), this.skinTextBox_nickName.SkinTxt.Text,"",this.skinTextBox_signature.SkinTxt.Text, this.headImageIndex, "");</p><p> if (this.
56、selfPhoto)</p><p> { </p><p> user.HeadImageData = ESBasic.Helpers.ImageHelper.Convert(this.pnlImgTx.BackgroundImage);</p><p> user.HeadImageIndex = -1;</p&g
57、t;<p><b> }</b></p><p> RegisterResult result = ggService.Register(user);</p><p> if (result == RegisterResult.Existed)</p><p><b> {</b></p>
58、<p> this.skinTextBox_id.SkinTxt.SelectAll();</p><p> this.skinTextBox_id.SkinTxt.Focus();</p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p><p>
59、 MessageBoxEx.Show("用戶帳號已經(jīng)存在!"); </p><p><b> return;</b></p><p><b> }</b></p><p> if (result == RegisterResult.Error)</p&g
60、t;<p><b> {</b></p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p><p> MessageBoxEx.Show("注冊出現(xiàn)錯誤!"); </p><p>
61、<b> return;</b></p><p><b> }</b></p><p> this.registeredUser = user; </p><p> this.DialogResult = System.Windows.Forms.DialogResult.OK;<
62、;/p><p><b> }</b></p><p> catch (Exception ee)</p><p><b> {</b></p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p>
63、<p> MessageBoxEx.Show("注冊失?。?quot; + ee.Message);</p><p><b> }</b></p><p><b> }</b></p><p> private void linkLabel2_LinkClicked(object sender,
64、 LinkLabelLinkClickedEventArgs e)</p><p><b> {</b></p><p> this.headImageIndex = (++this.headImageIndex) % GlobalResourceManager.HeadImages.Length;</p><p> this.pnlIm
65、gTx.BackgroundImage = GlobalResourceManager.HeadImages[this.headImageIndex];</p><p> this.selfPhoto = false;</p><p><b> }</b></p><p> private bool selfPhoto = false;&
66、lt;/p><p> private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)</p><p><b> {</b></p><p> PhotoForm form = new PhotoForm();</p>&l
67、t;p> if (form.ShowDialog() == DialogResult.OK)</p><p> {this.pnlImgTx.BackgroundImage = form.CurrentImage;</p><p> this.selfPhoto = true;}</p><p><b> } </b><
68、;/p><p> private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)</p><p><b> {</b></p><p> HeadImageForm form = new HeadImageForm();</p>
69、<p> if (form.ShowDialog() == DialogResult.OK)</p><p><b> {</b></p><p> this.pnlImgTx.BackgroundImage = form.CurrentImage;</p><p> this.selfPhoto = true;</
70、p><p><b> }</b></p><p><b> }</b></p><p> 5.2 軟件首頁界面設(shè)計</p><p> 用戶通過自己注冊的用戶名和密碼點擊登錄系統(tǒng),進行聊天通信操作,可以根據(jù)具體信息進行查找操作,具體的頁面如圖5-2所示。</p><p>&
71、lt;b> 圖5-2首頁設(shè)計圖</b></p><p> 5.3 好友查找及添加設(shè)計</p><p> 用戶通過自己注冊的用戶名和密碼點擊登錄系統(tǒng),可以對好友進行查找操作,通過輸入相應的用戶名,找到用戶進行添加,具體的頁面如圖5-3所示。</p><p><b> 圖5-3好友查找圖</b></p>&l
72、t;p> 查找好友部分代碼如下:</p><p><b> { </b></p><p> private void skinButton1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> this
73、.DialogResult = System.Windows.Forms.DialogResult.Cancel;</p><p> this.Close();</p><p><b> }</b></p><p> private void btnClose_Click(object sender, EventArgs e)</p
74、><p><b> {</b></p><p> this.friendID = this.skinTextBox_id.SkinTxt.Text.Trim();</p><p> if (this.friendID.Length == 0)</p><p><b> { </b></
75、p><p> MessageBoxEx.Show("帳號不能為空!");</p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p><p><b> return;</b></p><p> }
76、 </p><p><b> try</b></p><p><b> {</b></p><p> if (this.ggSupporter.IsFriend(this.friendID))</p><p><b> {</b></p><p&
77、gt; MessageBoxEx.Show("該用戶已經(jīng)是好友!");</p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p><p><b> return;</b></p><p><b> }</b&g
78、t;</p><p> this.catalogName = this.skinComboBox1.SelectedItem.ToString();</p><p> AddFriendContract contract = new AddFriendContract(this.friendID,this.catalogName);</p><p> byte
79、[] info =</p><p> ESPlus.Serialization.CompactPropertySerializer.Default.Serialize(contract);</p><p> byte[] bRes = this.rapidPassiveEngine.CustomizeOutter.Query(InformationTypes.AddFriend, in
80、fo);</p><p> AddFriendResult res = (AddFriendResult)BitConverter.ToInt32(bRes,0);</p><p> if (res == AddFriendResult.FriendNotExist)</p><p><b> {</b></p><p
81、> MessageBoxEx.Show("帳號不存在!");</p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p><p><b> return;</b></p><p><b> }</b>&l
82、t;/p><p> this.DialogResult = System.Windows.Forms.DialogResult.OK;</p><p><b> }</b></p><p> catch (Exception ee)</p><p><b> {</b></p>&
83、lt;p> MessageBoxEx.Show("添加好友失?。?quot; + ee.Message);</p><p> this.DialogResult = System.Windows.Forms.DialogResult.None;</p><p><b> }</b></p><p><b> }
84、 </b></p><p> 5.4 好友聊天設(shè)計</p><p> 在進行聊天操作的時候,可以同時登陸兩個用戶,用戶添加好友之后可以進聊天。</p><p> 兩個好友聊天時可以實現(xiàn)視頻及語音聊天、遠程控制及文件傳輸?shù)裙δ?,如圖5-4、5-5、5-6所示是一些相關(guān)的頁面設(shè)計。</p><p> (1)在兩個用戶
85、進行視頻聊天操作的時候,會有如圖5-4所示的界面,被邀請的用戶可以選擇接受或者拒絕按鈕。</p><p><b> 圖5-4視頻聊天圖</b></p><p> 視頻聊天實現(xiàn)的相關(guān)代碼如下:</p><p> #region 視頻聊天</p><p> private void 視頻聊天ToolStripMenu
86、Item_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> this.toolStripSplitButton1_ButtonClick(sender, e);</p><p><b> }</b></p><p>
87、private void toolStripSplitButton1_ButtonClick(object sender, EventArgs e)</p><p><b> {</b></p><p> if (this.mine.UserStatus == UserStatus.OffLine)</p><p><b> {
88、</b></p><p><b> return;</b></p><p><b> }</b></p><p> if (this.videoForm != null)</p><p><b> {</b></p><p><
89、b> return;</b></p><p><b> }</b></p><p> this.videoForm = new VideoForm(this.rapidPassiveEngine.CurrentUserID, this.currentFriend.UserID, this.currentFriend.Name, true);&l
90、t;/p><p> this.videoForm.FormClosed += new FormClosedEventHandler(videoForm_FormClosed);</p><p> this.videoForm.HungUpVideo += new CbGeneric<HungUpCauseType>(videoForm_ActiveHungUpVideo);
91、 </p><p> this.videoForm.Show();</p><p> if (!Program.MultimediaManager.Available)</p><p><b> {</b></p><p> MessageBox.Show("多媒體設(shè)備管理器不可用!", G
92、lobalResourceManager.SoftwareName); </p><p> if (this.videoForm != null)</p><p><b> {</b></p><p> this.videoForm.Close();</p><p><b>
93、}</b></p><p><b> return;</b></p><p><b> }</b></p><p> this.videoForm.Initialize(this.rapidPassiveEngine, Program.MultimediaManager);</p><
94、p> this.rapidPassiveEngine.CustomizeOutter.Send(this.currentFriend.UserID, InformationTypes.VideoRequest, null); </p><p><b> }</b></p><p> private void OnVideoReques
95、tReceived()</p><p><b> {</b></p><p> if (!this.TabControlContains(this.Title_Video))</p><p><b> {</b></p><p> TabPage page = new TabPage(thi
96、s.Title_Video);</p><p> page.BackColor = System.Drawing.Color.White;</p><p> Panel pannel = new Panel();</p><p> page.Controls.Add(pannel);</p><p> pannel.BackColor
97、 = Color.Transparent;</p><p> pannel.Dock = DockStyle.Fill;</p><p> pannel.Controls.Add(this.videoRequestPanel);</p><p> this.fileTransferingViewer.Dock = System.Windows.Forms.Do
98、ckStyle.Fill;</p><p> this.skinTabControl1.TabPages.Add(page);</p><p> this.skinTabControl1.SelectedIndex = this.GetSelectIndex(this.Title_Video);</p><p> this.ResetTabControVisi
99、ble();</p><p> } </p><p> } </p><p> private void OnVideoAnswerReceived(bool agree)</p><p><b> {</b></p><p> if (
100、this.videoForm == null)</p><p><b> {</b></p><p><b> return;</b></p><p><b> }</b></p><p> if (agree)</p><p><b>
101、; {</b></p><p> System.Threading.Thread.Sleep(1000);</p><p> this.videoForm.OnAgree();</p><p><b> }</b></p><p><b> else</b></p>
102、<p><b> {</b></p><p> this.videoForm.Close();</p><p> this.videoForm = null;</p><p> this.AppendSysMessage("對方拒絕了您的視頻邀請。");</p><p><
103、b> }</b></p><p><b> } </b></p><p> private void OnVideoHungUpReceived()</p><p><b> {</b></p><p> if (this.videoForm != null)&
104、lt;/p><p><b> {</b></p><p> this.AppendSysMessage("對方中止了視頻通話。");</p><p> this.videoForm.OnHungUpVideo();</p><p><b> return;</b></p
105、><p><b> }</b></p><p> int tabIndex = this.GetSelectIndex(this.Title_Video);</p><p> if (tabIndex >= 0)</p><p><b> {</b></p><p>
106、; this.skinTabControl1.TabPages.RemoveAt(tabIndex);</p><p> this.skinTabControl1.SelectedIndex = </p><p> this.skinTabControl1.TabPages.Count - 1;</p><p> this.ResetTabControVis
107、ible();</p><p> this.AppendSysMessage("對方結(jié)束了視頻會話邀請。");</p><p><b> }</b></p><p><b> } </b></p><p> private void videoRequestPan
108、el_VideoRequestAnswerd(bool agree)</p><p><b> {</b></p><p> this.skinTabControl1.TabPages.RemoveAt(this.GetSelectIndex(this.Title_Video));</p><p> this.skinTabControl
109、1.SelectedIndex = this.skinTabControl1.TabPages.Count - 1;</p><p> this.ResetTabControVisible();</p><p> if (agree)</p><p><b> {</b></p><p> this.videoF
110、orm = new VideoForm(this.rapidPassiveEngine.CurrentUserID, this.currentFriend.UserID, </p><p> this.currentFriend.Name, false);</p><p> this.videoForm.FormClosed += new FormClosedEventHandler(
111、videoForm_FormClosed);</p><p> this.videoForm.HungUpVideo += new CbGeneric<HungUpCauseType>(videoForm_ActiveHungUpVideo);</p><p> this.videoForm.Show();</p><p> this.Append
112、SysMessage("您同意了對方的視頻會話請求,正在啟動多媒體設(shè)備...");</p><p> if (!Program.MultimediaManager.Available)</p><p> {this.rapidPassiveEngine.CustomizeOutter.Send(this.currentFriend.UserID, </p>
113、;<p> InformationTypes.RejectVideo, null);</p><p> this.AppendSysMessage("多媒體設(shè)備管理器不可用!");</p><p> MessageBox.Show("多媒體設(shè)備管理器不可用!", GlobalResourceManager.SoftwareName
114、);</p><p> if (this.videoForm != null)</p><p><b> {</b></p><p> this.videoForm.Close();</p><p><b> }</b></p><p><b> retu
115、rn;</b></p><p><b> }</b></p><p> this.rapidPassiveEngine.CustomizeOutter.Send(this.currentFriend.UserID, InformationTypes.AgreeVideo, null);</p><p> this.videoF
116、orm.Initialize(this.rapidPassiveEngine, Program.MultimediaManager);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p>
117、 this.rapidPassiveEngine.CustomizeOutter.Send(this.currentFriend.UserID, InformationTypes.RejectVideo, null);</p><p> this.AppendSysMessage("您拒絕了對方的視頻會話請求。");</p><p><b> }<
118、/b></p><p><b> }</b></p><p> private void videoForm_ActiveHungUpVideo(HungUpCauseType cause)</p><p><b> {</b></p><p> this.rapidPassiveEn
119、gine.CustomizeOutter.Send(this.currentFriend.UserID, InformationTypes.HungUpVideo, null);</p><p> if (cause == HungUpCauseType.ActiveHungUp)</p><p><b> {</b></p><p>
120、this.AppendSysMessage("您中止了視頻通話。");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> this.AppendSysMessag
121、e("與對方的網(wǎng)絡連接中斷,視頻通話結(jié)束。");</p><p><b> }</b></p><p><b> }</b></p><p> private void videoForm_FormClosed(object sender, FormClosedEventArgs e)</p
122、><p><b> {</b></p><p> this.videoForm = null;</p><p><b> }</b></p><p> #endregion </p><p> ?。?)當用戶進行交流的時候,使用最多的就是語音聊天功能。用戶A
123、邀請用戶B進行語音聊天,在用戶B還未選擇接受或者拒絕操作之前還可以進行掛斷操作。</p><p> 圖5-5 語音聊天圖</p><p> 語音功能實現(xiàn)代碼如下:</p><p> #region 語音聊天</p><p> private void 語音聊天ToolStripMenuItem_Click(object sender,
124、 EventArgs e)</p><p><b> {</b></p><p> this.toolStripSplitButton3_ButtonClick(sender, e);</p><p><b> }</b></p><p> private void toolStripSpl
125、itButton3_ButtonClick(object sender, EventArgs e)</p><p><b> {</b></p><p> if (this.mine.UserStatus == UserStatus.OffLine)</p><p><b> {</b></p><
126、;p><b> return;</b></p><p><b> }</b></p><p> if (this.videoForm != null)</p><p><b> {</b></p><p><b> return;</b>&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于P2P的跨平臺即時通信軟件的設(shè)計與實現(xiàn).pdf
- 基于P2P的即時通信系統(tǒng)設(shè)計.pdf
- 基于JXTA的P2P即時通信系統(tǒng)的實現(xiàn).pdf
- 基于P2P的校園即時通信系統(tǒng)研究.pdf
- 基于p2p模式的即時通信系統(tǒng)的研究與實現(xiàn)
- 基于P2P的即時通信系統(tǒng)的設(shè)計與實現(xiàn).pdf
- P2P即時通信系統(tǒng)的研究與實現(xiàn).pdf
- 基于RTR-RTCP的P2P企業(yè)即時通信系統(tǒng).pdf
- P2P網(wǎng)絡中安全即時通信技術(shù)的研究與實現(xiàn).pdf
- 基于Fit AP架構(gòu)的P2P即時通信定位系統(tǒng).pdf
- 基于XMPP的P2P即時通信系統(tǒng)的研究及實現(xiàn).pdf
- 基于WebRTC的P2P即時通信系統(tǒng)的研究與實現(xiàn).pdf
- 基于P2P模式的即時通信系統(tǒng)的研究與實現(xiàn).pdf
- 基于p2p校園即時通信系統(tǒng)設(shè)計與實現(xiàn)
- 基于XMPP協(xié)議的P2P即時通訊軟件設(shè)計.pdf
- 基于P2P模式的遠程醫(yī)療監(jiān)控即時通信系統(tǒng)的開發(fā).pdf
- 基于P2P的分布式PKI模型及在即時通信中的應用.pdf
- 基于P2P校園即時通信系統(tǒng)設(shè)計與實現(xiàn).pdf
- 基于P2P即時通訊系統(tǒng)的研究.pdf
- 基于NAT穿透的P2P即時通信系統(tǒng)的設(shè)計與實現(xiàn).pdf
評論
0/150
提交評論