

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p> 題 目 基于P2P網(wǎng)絡(luò)模型的即時(shí)通信軟件的研制</p><p><b> 學(xué) 生 </b></p><p><b> 指導(dǎo)教師 </b></p><p><b> 年
2、 級(jí) </b></p><p> 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)</p><p> 系 別 計(jì)算機(jī)科學(xué)系</p><p><b> 計(jì)算機(jī)科學(xué)系</b></p><p><b> 2016年5月</b></p><p><b> 鄭
3、重聲明</b></p><p> 本人的畢業(yè)論文(設(shè)計(jì))是在指導(dǎo)教師老師的指導(dǎo)下獨(dú)立撰寫(xiě)完成的。如有剽竊、抄襲、造假等違反學(xué)術(shù)道德、學(xué)術(shù)規(guī)范和侵權(quán)的行為,本人愿意承擔(dān)由此產(chǎn)生的各種后果,直至法律責(zé)任,并愿意通過(guò)網(wǎng)絡(luò)進(jìn)行公眾的監(jiān)督。特此鄭重聲明。</p><p> 畢業(yè)論文(設(shè)計(jì))作者簽名:</p><p> 年 月 日</p>
4、;<p><b> 目 錄</b></p><p><b> 標(biāo)題1</b></p><p><b> 摘要1</b></p><p><b> 1引言1</b></p><p> 1.1 開(kāi)發(fā)背景及意義1</p
5、><p> 1.1.1 背景及意義1</p><p> 1.1.2 國(guó)內(nèi)外企業(yè)級(jí)通信系統(tǒng)的發(fā)展現(xiàn)狀1</p><p><b> 2可行性分析2</b></p><p> 2.1 技術(shù)可行性分析2</p><p> 2.2 經(jīng)濟(jì)可行性分析2</p><p&
6、gt; 2.3 操作可行性2</p><p> 2.4 實(shí)現(xiàn)技術(shù)分析2</p><p><b> 3需求分析3</b></p><p> 3.1 軟件功能需求3</p><p> 3.2 系統(tǒng)開(kāi)發(fā)環(huán)境配置需求4</p><p><b> 4數(shù)據(jù)庫(kù)設(shè)計(jì)4<
7、/b></p><p> 4.1 數(shù)據(jù)庫(kù)分析4</p><p> 4.1.1 數(shù)據(jù)庫(kù)概述4</p><p> 4.1.2 軟件實(shí)現(xiàn)的E-R圖5</p><p> 4.2 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)6</p><p><b> 5軟件功能設(shè)計(jì)7</b></p>&
8、lt;p> 5.1 登錄注冊(cè)設(shè)計(jì)7</p><p> 5.2 軟件首頁(yè)界面設(shè)計(jì)10</p><p> 5.3 好友查找及添加設(shè)計(jì)10</p><p> 5.4 好友聊天設(shè)計(jì)11</p><p> 5.5 刪除好友設(shè)計(jì)24</p><p> 5.6 群聊設(shè)計(jì)24</p><
9、;p><b> 6 結(jié) 論25</b></p><p><b> 參考文獻(xiàn)26</b></p><p><b> 致 謝27</b></p><p><b> 外文頁(yè)28</b></p><p> 基于P2P網(wǎng)絡(luò)模型的即時(shí)通信軟
10、件的研制</p><p><b> 王莉鑫</b></p><p> 摘 要 隨著現(xiàn)代通信技術(shù)的日益成熟,越來(lái)越多的企業(yè)由于溝通需求,紛紛考慮搭建局域網(wǎng)下的通信系統(tǒng),來(lái)解決平時(shí)工作交流和溝通的問(wèn)題。企業(yè)級(jí)通信軟件成本低,使用方便,信息傳輸速度快,同時(shí)因?yàn)榛诰钟蚓W(wǎng)下的通信交互,可以做到資源的共享和公告信息的下達(dá)。即時(shí)通信軟件的研究解決了信息通信與用戶(hù)管理的
11、有機(jī)統(tǒng)一,從而提高了企業(yè)管理的智能化與管理效率。</p><p> 此軟件采用c#作為設(shè)計(jì)語(yǔ)言,使用VS2010作為開(kāi)發(fā)和運(yùn)行工具。研究的是一個(gè)小型的P2P即時(shí)通信軟件,通過(guò)局域網(wǎng)內(nèi)IP地址建立通信連接,實(shí)現(xiàn)用戶(hù)的登錄,注冊(cè)及驗(yàn)證,添加、查找、刪除好友,與好友語(yǔ)音、視頻,群的創(chuàng)建,查找,添加等功能,可以很好的解決公司內(nèi)部通信的問(wèn)題,它將局域網(wǎng)資源有效的利用起來(lái),完成公司整體通訊平臺(tái)的架構(gòu)。</p>
12、<p> 關(guān)鍵詞 內(nèi)部通信 c# 用戶(hù) 局域網(wǎng)</p><p><b> 1引言</b></p><p> 1.1 開(kāi)發(fā)背景及意義</p><p> 1.1.1 背景及意義</p><p> 隨著信息技術(shù)在中國(guó)的發(fā)展,越來(lái)越多的人了解到信息傳播的重要性。從最初的口頭相傳到如今的一個(gè)手
13、機(jī)行天下,人們已經(jīng)逐漸熟悉和依賴(lài)上便捷高效的通信軟件,通信互聯(lián)網(wǎng)產(chǎn)業(yè)日漸崛起正逐漸成為中國(guó)信息產(chǎn)業(yè)的領(lǐng)頭羊,一大批基于信息產(chǎn)業(yè)開(kāi)發(fā)的公司相繼上市。與此同時(shí),信息技術(shù)的發(fā)展更是呈現(xiàn)出新特點(diǎn),對(duì)信息安全和信息的傳輸速率的要求也不斷上升,這使得企業(yè)級(jí)即時(shí)通信軟件應(yīng)運(yùn)而生,讓企業(yè)在安全、易于管理、協(xié)調(diào)嚴(yán)謹(jǐn)?shù)墓芾砟J较掠行У貍鬟_(dá)和交流信息。</p><p> 企業(yè)級(jí)即時(shí)通信軟件是目前公司內(nèi)部員工上網(wǎng)交流使用率最高的軟件之
14、一,公司內(nèi)部通信系統(tǒng)可以使公司內(nèi)部員工識(shí)別其他用戶(hù)并與之交流。大多數(shù)企業(yè)通常都具備一個(gè)獨(dú)立的局域網(wǎng)硬件環(huán)境,并在此基礎(chǔ)上連入萬(wàn)維網(wǎng)。然而公司每年在接入互聯(lián)網(wǎng)時(shí)需要承擔(dān)很巨大的網(wǎng)絡(luò)費(fèi)用,因此,可以設(shè)計(jì)一款在局域網(wǎng)環(huán)境下運(yùn)行的通信軟件,在保證通信和信息管理功能實(shí)現(xiàn)的同時(shí)減少支出,適應(yīng)公司的本身辦公環(huán)境。除此之外,由于局域網(wǎng)具備與外界網(wǎng)絡(luò)物理隔絕的特點(diǎn),因此可以有效地降低被外界網(wǎng)絡(luò)和商業(yè)黑客攻擊的危險(xiǎn),保證了通信環(huán)境下的安全性。</p&
15、gt;<p> 1.1.2 國(guó)內(nèi)外企業(yè)級(jí)通信系統(tǒng)的發(fā)展現(xiàn)狀</p><p> 企業(yè)級(jí)的即時(shí)通信系統(tǒng),采用了UDP協(xié)議和數(shù)據(jù)報(bào)來(lái)實(shí)現(xiàn)。廣域網(wǎng)下的即時(shí)通信系統(tǒng),一般分為T(mén)CP通信和UDP通信兩種,TCP通信的優(yōu)勢(shì)在于能夠保證消息的準(zhǔn)確收發(fā),UDP通信的優(yōu)勢(shì)在于具有群發(fā)和廣播的功能。相關(guān)的開(kāi)發(fā)技術(shù)和相對(duì)應(yīng)的產(chǎn)品已經(jīng)得到人們的肯定,人們?cè)贗CQ和MSN軟件上進(jìn)行注冊(cè)和登陸,就可以享受這些由國(guó)外大互聯(lián)網(wǎng)
16、公司開(kāi)發(fā)的優(yōu)秀的即時(shí)聊天軟件。國(guó)產(chǎn)的即時(shí)通信軟件起步較晚,但在非常短的時(shí)間內(nèi)崛起,如即時(shí)通信軟件的巨頭QQ騰訊公司,同時(shí)推出同類(lèi)型軟件的還有新浪公司的UC,上述軟件已經(jīng)占據(jù)了中國(guó)即時(shí)聊天市場(chǎng)的大部分份額 。這些軟件在使用方面和用戶(hù)體驗(yàn)上都各有千秋,但遺憾的是,在企業(yè)級(jí)即時(shí)通信領(lǐng)域還不是很廣泛,仍具有很大的開(kāi)發(fā)空間。</p><p> 目前,越來(lái)越多的軟件公司開(kāi)始著力開(kāi)發(fā)具有企業(yè)特色的辦公類(lèi)型通信軟件,主要包括:
17、Imo云辦公室、騰訊公司的針對(duì)公司開(kāi)發(fā)的RTX軟件,免費(fèi)版且應(yīng)用比較普遍的有飛秋等。通過(guò)一系列的市場(chǎng)調(diào)研可以清楚地看到,中國(guó)在企業(yè)級(jí)通信系統(tǒng)設(shè)計(jì)方面仍存在很大的不足,比如對(duì)于公司信息安全性的問(wèn)題導(dǎo)致很多公司寧愿花大價(jià)錢(qián)從國(guó)外訂購(gòu)昂貴的通信軟件,也不愿使用這些公司開(kāi)發(fā)的軟件。免費(fèi)版的飛秋在市場(chǎng)上已經(jīng)樹(shù)立起一個(gè)很好的口碑,但相對(duì)應(yīng)的是后續(xù)開(kāi)發(fā)的不足和系統(tǒng)方面的BUG,整體界面不夠美觀(guān),操作繁瑣,使操作者感覺(jué)不舒適。任何一款面向用戶(hù)開(kāi)發(fā)的軟件
18、都應(yīng)該考慮到用戶(hù)的使用感受,而且,企業(yè)級(jí)即使通信軟件除了需要完成基本的即時(shí)通信功能外,還可以實(shí)現(xiàn)通訊人員列表的維護(hù)、實(shí)時(shí)搜索IP段內(nèi)的所有用戶(hù)、訪(fǎng)問(wèn)公共資源、群發(fā)消息和信史發(fā)送等功能。功能的強(qiáng)大和使用的方便相結(jié)合,必定會(huì)帶來(lái)相當(dāng)可觀(guān)的用戶(hù)群體。綜合這些方面的考慮,其實(shí)國(guó)內(nèi)的企業(yè)即時(shí)通信仍是占了一份很大的市場(chǎng),只是由于一部分廠(chǎng)商的粗制濫造和開(kāi)發(fā)系統(tǒng)的不認(rèn)真仔細(xì),導(dǎo)致了這其中很大部分市場(chǎng)份額被國(guó)外搶走。因此,開(kāi)發(fā)出一種符合市場(chǎng)要求,更加貼切
19、企業(yè)需要的內(nèi)部通信軟件勢(shì)在必行。</p><p><b> 2 可行性分析</b></p><p> 2.1 技術(shù)可行性分析</p><p> 技術(shù)可行性是最重要的部分也是最難的部分,用SQL Server來(lái)后臺(tái)數(shù)據(jù)庫(kù)的管理體系,這是發(fā)揮支柱作用,解決數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)庫(kù)程序等,這些應(yīng)用程序可以提供對(duì)數(shù)據(jù)管理的有力支持和數(shù)據(jù)庫(kù)中的數(shù)據(jù)提供有
20、效的管理,使用有效的措施來(lái)達(dá)到數(shù)據(jù)完整、數(shù)據(jù)安全和數(shù)據(jù)可靠易用的目的。編程平臺(tái)采用Visual Studio 2010它已被證明是一個(gè)極其強(qiáng)大和成功的開(kāi)發(fā)平臺(tái),其成熟穩(wěn)定能夠充分保證軟件設(shè)計(jì)的順利進(jìn)行。</p><p> 2.2 經(jīng)濟(jì)可行性分析</p><p> 經(jīng)濟(jì)可行性的分析主要針對(duì)的是軟件項(xiàng)目開(kāi)發(fā)時(shí)所有的預(yù)算和軟件實(shí)施后帶來(lái)的經(jīng)濟(jì)效益進(jìn)行分析。本軟件功能強(qiáng)大,操作簡(jiǎn)單,成本低廉
21、,無(wú)需過(guò)高配置的運(yùn)行環(huán)境,因此開(kāi)發(fā)成本和預(yù)算都可以接受。本軟件可以有效地提高學(xué)校內(nèi)部的工作效率,節(jié)省寶貴的時(shí)間,不占用過(guò)多的資源,無(wú)需對(duì)使用者進(jìn)行功能上的講解,有助于學(xué)校有效地管理日常事務(wù)和下達(dá)公告。因此,在經(jīng)濟(jì)上這款軟件也是可適用的和可行的。本軟件是畢業(yè)設(shè)計(jì)沒(méi)有商業(yè)因素,學(xué)校為我們提供了良好的基礎(chǔ)設(shè)施,如:機(jī)房,電腦,軟件開(kāi)發(fā)環(huán)境等等,如果遇到了技術(shù)難題也可以請(qǐng)老師指導(dǎo)。因此開(kāi)發(fā)設(shè)計(jì)學(xué)校通信系統(tǒng)并不需要開(kāi)發(fā)經(jīng)費(fèi),在經(jīng)濟(jì)上完全可實(shí)行。&
22、lt;/p><p><b> 2.3 操作可行性</b></p><p> 該即時(shí)通信軟件界面簡(jiǎn)潔,操作簡(jiǎn)單明了,類(lèi)似于大家熟悉使用的QQ,公司員工經(jīng)過(guò)簡(jiǎn)單的培訓(xùn)就可以熟練的操作。并且該軟件可以實(shí)現(xiàn)公司的內(nèi)部交流,保密性良好,接收效率高,具有即時(shí)行。該軟件成本低,操作靈活簡(jiǎn)單,本軟件在操作可行上完全沒(méi)有問(wèn)題。綜上所述此軟件的開(kāi)發(fā)完全是可行的。</p>&
23、lt;p> 2.4 實(shí)現(xiàn)技術(shù)分析</p><p> 2.4.1 運(yùn)用P2P技術(shù)實(shí)現(xiàn)過(guò)程分析</p><p> 在P2P技術(shù)尚未風(fēng)行之前,很多企業(yè)級(jí)應(yīng)用采用C/S或者B/S架構(gòu),在傳統(tǒng)的C/S架構(gòu)應(yīng)用程序中,客戶(hù)端(或者叫客戶(hù)機(jī))與服務(wù)器有明確的分界??蛻?hù)端軟件向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器存放共享資源并對(duì)客戶(hù)端請(qǐng)求作出響應(yīng)。顯然,在這種架構(gòu)下,客戶(hù)機(jī)越多,服務(wù)器的壓力越大。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ù)實(shí)現(xiàn)的每個(gè)計(jì)算機(jī)節(jié)點(diǎn)既是客戶(hù)端,也是服務(wù)器,其功能的提供是對(duì)等的,每個(gè)計(jì)算機(jī)節(jié)點(diǎn)根據(jù)自己的計(jì)算能力,同時(shí)承擔(dān)了一部分服務(wù)器的功能。安裝了相同P2P軟件的計(jì)算機(jī)之間可以直接進(jìn)行數(shù)據(jù)通信,而不需要依賴(lài)于專(zhuān)門(mén)的服務(wù)器。P2P架構(gòu)如圖2-2所示:</p>&
25、lt;p> 圖2-2 P2P架構(gòu)</p><p> 即時(shí)通信軟件具體的實(shí)現(xiàn)步驟:</p><p> 用戶(hù)A通過(guò)客戶(hù)端輸入自己的賬號(hào)和密碼登錄到服務(wù)器,服務(wù)器通過(guò)用戶(hù)A注冊(cè)的數(shù)據(jù)庫(kù)驗(yàn)證身份,如果驗(yàn)證成功,則同意登錄。</p><p> 通過(guò)用戶(hù)A的好友列表信息,服務(wù)器將用戶(hù)A在線(xiàn)信息發(fā)送到好友列表中在線(xiàn)的好友。</p><p>
26、 服務(wù)器將在線(xiàn)好友的信息發(fā)送給用戶(hù)A,使用戶(hù)A可以看到好友的狀態(tài)。</p><p> 如果用戶(hù)A想要跟好友聊天,直接在聊天界面上發(fā)送消息即可。用戶(hù)B看見(jiàn)信息后可以恢復(fù)用戶(hù)A并予以顯示。</p><p><b> 3 需求分析</b></p><p> 3.1 軟件功能需求</p><p> 軟件功能需求就是
27、該軟件是否存在可以滿(mǎn)足用戶(hù)需求的功能。為了更大程度的滿(mǎn)足用戶(hù),必須設(shè)計(jì)出組成這個(gè)系統(tǒng)的所有程序和文件(包括數(shù)據(jù)庫(kù))?;谄髽I(yè)通信這一前提,功能的實(shí)現(xiàn)應(yīng)該與企業(yè)辦公模式掛鉤,避免過(guò)多的無(wú)關(guān)信息,比如:娛樂(lè)信息等。信息傳達(dá)明確快速,界面友好簡(jiǎn)單,容易操作。根據(jù)企業(yè)內(nèi)部通信的實(shí)際需求,軟件需要開(kāi)發(fā)以下功能。</p><p> (1)軟件界面友好簡(jiǎn)單、整潔美觀(guān)。</p><p> (2)具有完
28、善的消息顯示、消息提示和用戶(hù)信息顯示。</p><p> (3)支持局域網(wǎng)下通信,支持UDP和數(shù)據(jù)報(bào)不同方式下的消息傳輸。</p><p> (4)支持發(fā)送消息功能,保證消息傳輸?shù)臏?zhǔn)確性和安全性。</p><p> (5)支持窗體最小化,支持托盤(pán)操作,保證電腦界面干凈整潔。</p><p> (6)使用獨(dú)立的本地?cái)?shù)據(jù)庫(kù),保證軟件的可移
29、植性和拓展性。</p><p> (7)支持自動(dòng)搜索和手動(dòng)添加IP或IP段內(nèi)的所有通信用戶(hù)。</p><p> (8)提供用戶(hù)信息的增刪改查。</p><p> 除了滿(mǎn)足以上的功能實(shí)現(xiàn)之外,還要考慮到商業(yè)文件和機(jī)密的安全性。如通訊之所以不會(huì)選擇使用QQ和MSN的原因,不僅是因?yàn)閵蕵?lè)軟件會(huì)大量增加私人時(shí)間,降低辦公效率,更重要的一點(diǎn)是病毒和木馬的猖獗會(huì)嚴(yán)重威脅到
30、公司的信息安全。即便是在局域網(wǎng)下的通信軟件,相對(duì)于廣域網(wǎng)來(lái)說(shuō),被入侵和盜竊的風(fēng)險(xiǎn)更小,但誰(shuí)又能說(shuō)那一定是不存在的呢?因此,可以考慮在系統(tǒng)功能和模塊的設(shè)計(jì)上采用信息攔截,攔截垃圾消息和病毒木馬,為信息通信和機(jī)密文件披上保護(hù)衣。其次,通信信息能否一定送達(dá)至接收方,發(fā)送方如何知道信息已送達(dá),也是一項(xiàng)需要完善的功能。信息交互必須保證百分之百的傳送成功,否則信息通信便喪失了實(shí)用性。</p><p> 3.2 系統(tǒng)開(kāi)發(fā)環(huán)
31、境配置需求</p><p> 使用語(yǔ)言及環(huán)境:c#,vs2010;</p><p> 數(shù)據(jù)庫(kù):sql server;</p><p> 操作系統(tǒng):Windows 7 ;</p><p><b> 運(yùn)行平臺(tái):vs。</b></p><p> 3.3 軟件功能設(shè)計(jì)</p>&
32、lt;p> 根據(jù)大多數(shù)企業(yè)對(duì)通信系統(tǒng)的要求,綜合考慮可行性和必要性的分析,本軟件可以實(shí)現(xiàn)以下功能。</p><p> (1)操作簡(jiǎn)單方便、界面美觀(guān)整潔。</p><p> (2)完成基本的通信功能,同時(shí)開(kāi)發(fā)出更實(shí)際的群發(fā)和離線(xiàn)下的信史功能。</p><p> (3)通信窗口顯示對(duì)方IP信息和用戶(hù)名。</p><p> (4)局
33、域網(wǎng)下的IP和IP段內(nèi)的用戶(hù)搜索和自動(dòng)搜索。</p><p> (5)設(shè)計(jì)軟件托盤(pán)功能,具有訪(fǎng)問(wèn)服務(wù)器,打開(kāi)界面和退出三大功能。</p><p> (6)客戶(hù)端和服務(wù)器一體化,節(jié)省資源,同時(shí)方便后續(xù)的功能拓展。</p><p> (7)更方便訪(fǎng)問(wèn)公共資源和公共程序,保證了資料和文件的保密性。</p><p> (8)軟件運(yùn)行穩(wěn)定、安全
34、可靠。</p><p><b> 4 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p><b> 4.1 數(shù)據(jù)庫(kù)分析</b></p><p> 4.1.1 數(shù)據(jù)庫(kù)概述</p><p> SQLSever具有很大的靈活性,改變了以往傳統(tǒng)的數(shù)據(jù)放置方式,將相關(guān)數(shù)據(jù)保存在不同的表中,通過(guò)表之間的關(guān)聯(lián)性,實(shí)現(xiàn)數(shù)
35、據(jù)的管理。由于SQLSever具有小體積,高速度,低成本以及源代碼開(kāi)放等優(yōu)點(diǎn),SQLSever成為大多數(shù)中小型網(wǎng)站的首選。</p><p> 雖然SQLSever存在著安全系統(tǒng)以及缺乏標(biāo)準(zhǔn)的RI機(jī)制等缺點(diǎn)并且與其他大型數(shù)據(jù)庫(kù)相比,仍存在著規(guī)模比較小,功能實(shí)現(xiàn)存在著限制以及效率較低等不足之處但是這都不影響其歡迎程度,SQLSever具有以下特性:</p><p> 多處理器:SQLSev
36、er采用多種數(shù)據(jù)類(lèi)型,支持多個(gè)處理器共同處理,具有較快的處理速度;</p><p> 可移植性:在不同的操作系統(tǒng)下均可以正確運(yùn)行,比如Window,也可以在不同的運(yùn)行環(huán)境下正確的運(yùn)行;</p><p> 多線(xiàn)程:SQLSever為用戶(hù)提供便利的服務(wù),使進(jìn)程切換迅速,CPU的利用率高,系統(tǒng)資源的利用率高,充分利用CPU資源;</p><p> 安全性:在客戶(hù)端與
37、服務(wù)器傳輸信息的過(guò)程中,SQLSever通過(guò)口令系統(tǒng)保證彼此間的所有信息的傳送都被嚴(yán)格的加密,通過(guò)加密解密機(jī)制保證系統(tǒng)的安全性;</p><p> 容量大:SQLSever數(shù)據(jù)庫(kù),存儲(chǔ)空間大,不必?fù)?dān)心存放的記錄數(shù)據(jù)空間不夠問(wèn)題;</p><p> 穩(wěn)定性:SQLSever的內(nèi)存分配系統(tǒng)穩(wěn)定性高;</p><p> 管理方式多樣性:SQLSever的管理方式多樣
38、性,擁有不同的管理方式,如圖形管理;</p><p> 方便性:SQLSever具有強(qiáng)大的查詢(xún)功能,支持規(guī)范的查詢(xún)語(yǔ)言,優(yōu)化查詢(xún)算法,對(duì)相關(guān)數(shù)據(jù)查詢(xún)?cè)敿?xì),具有方便性,提高查詢(xún)速度。</p><p> 4.1.2 軟件實(shí)現(xiàn)的E-R圖</p><p> 該系統(tǒng)可分為用戶(hù)、群組、聊天消息記錄三個(gè)實(shí)體,用戶(hù)實(shí)體主要記錄和修改用戶(hù)方面的操作,群組實(shí)體主要記錄和修改群內(nèi)
39、成員方面的操作,聊天消息記錄實(shí)體主要是記錄用戶(hù)之間交流消息方面的操作。</p><p><b> ?。?)用戶(hù)實(shí)體</b></p><p> 用戶(hù)實(shí)體包括通信系統(tǒng)中所有的用戶(hù)群體。在這里,本機(jī)用戶(hù)和好友界面的用戶(hù)是一樣的,同屬于一種用戶(hù)實(shí)體。用戶(hù)信息包括:用戶(hù)賬號(hào),用戶(hù)密碼,用戶(hù)姓名,好友,個(gè)性簽名,頭像,群組信息,創(chuàng)建時(shí)間和默認(rèn)好友分類(lèi)還有相關(guān)的提示信息。如圖4.
40、1所示。</p><p> 圖4-1 用戶(hù)實(shí)體E-R圖</p><p><b> ?。?)群組實(shí)體</b></p><p> 群組實(shí)體是指用戶(hù)創(chuàng)建的群,包括:群賬號(hào)、群名稱(chēng)、群創(chuàng)建者、群公告、群成員和創(chuàng)建時(shí)間。如圖4.2所示。</p><p> 圖4-2 用戶(hù)實(shí)體E-R圖</p><p>&
41、lt;b> ?。?)消息記錄實(shí)體</b></p><p> 消息記錄實(shí)體是指存放聊天記錄的地方,其中包括兩個(gè)用戶(hù)間的聊天記錄和群組成員間的聊天記錄,具體包括:聊天數(shù)目、用戶(hù)賬號(hào)、好友賬號(hào)、產(chǎn)生時(shí)間、聊天內(nèi)容和消息類(lèi)型。具體如下圖4.3所示。</p><p> 圖4-3 消息記錄實(shí)體E-R圖</p><p> 4.2 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)&l
42、t;/p><p> 本軟件中創(chuàng)建了一個(gè)名為IM2016的數(shù)據(jù)庫(kù)。根據(jù)數(shù)據(jù)庫(kù)實(shí)體的分析,應(yīng)該設(shè)計(jì)三個(gè)數(shù)據(jù)表,分別為用戶(hù)信息表dbo.GGUser、群組信息表dbo.GGGroup和消息記錄表dbo.ChatMessageRecord</p><p> ?。?)dbo.GGUser(用戶(hù)信息表)</p><p> 用戶(hù)信息表存儲(chǔ)的是用戶(hù)的所有信息,每個(gè)字段代表用戶(hù)的一個(gè)
43、屬性,共同組成用戶(hù)的實(shí)體。表dbo.GGUser的結(jié)構(gòu)圖如表4-1所示。</p><p> 表4-1 用戶(hù)信息表結(jié)構(gòu)圖</p><p> ?。?)dbo.GGGroup(群組信息表)</p><p> 群組信息表主要用來(lái)保存群組的信息,群組信息表dbo.GGGroup的結(jié)構(gòu)如下表4-2所示。</p><p> 表4-2群組信息表結(jié)構(gòu)圖&
44、lt;/p><p> ?。?)dbo.ChatMessageRecord(消息記錄表)</p><p> 消息記錄表主要是存儲(chǔ)群組成員間的聊天記錄和用戶(hù)之間的消息記錄。消息記錄表dbo.ChatMessageRecord的結(jié)構(gòu)如下表4-3所示。</p><p> 表4-3消息記錄表結(jié)構(gòu)圖</p><p><b> 5軟件功能設(shè)計(jì)&
45、lt;/b></p><p> 軟件的功能設(shè)計(jì)是軟件開(kāi)發(fā)最核心的內(nèi)容,企業(yè)級(jí)的即時(shí)通信軟件需要實(shí)現(xiàn)公司員工的登錄注冊(cè)、傳輸文件、聊天等功能。以下是該軟件的一些具體的功能設(shè)計(jì)。</p><p> 5.1 登錄注冊(cè)設(shè)計(jì)</p><p> 軟件的運(yùn)行和操作離不開(kāi)具體的用戶(hù)名注冊(cè)和登錄,這里的注冊(cè)頁(yè)面可以進(jìn)行頭像選擇,填寫(xiě)相關(guān)的數(shù)據(jù)信息進(jìn)行注冊(cè),如圖5-1所示。
46、</p><p><b> 圖5-1登錄注冊(cè)圖</b></p><p> 注冊(cè)過(guò)程代碼如下所示:</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("帳號(hào)不能為空!");</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("用戶(hù)帳號(hào)已經(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("注冊(cè)出現(xiàn)錯(cuò)誤!"); </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("注冊(cè)失?。?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 軟件首頁(yè)界面設(shè)計(jì)</p><p> 用戶(hù)通過(guò)自己注冊(cè)的用戶(hù)名和密碼點(diǎn)擊登錄系統(tǒng),進(jìn)行聊天通信操作,可以根據(jù)具體信息進(jìn)行查找操作,具體的頁(yè)面如圖5-2所示。</p><p>&
71、lt;b> 圖5-2首頁(yè)設(shè)計(jì)圖</b></p><p> 5.3 好友查找及添加設(shè)計(jì)</p><p> 用戶(hù)通過(guò)自己注冊(cè)的用戶(hù)名和密碼點(diǎn)擊登錄系統(tǒng),可以對(duì)好友進(jìn)行查找操作,通過(guò)輸入相應(yīng)的用戶(hù)名,找到用戶(hù)進(jìn)行添加,具體的頁(yè)面如圖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("帳號(hào)不能為空!");</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("該用戶(hù)已經(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("帳號(hào)不存在!");</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("添加好友失敗!" + 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è)計(jì)</p><p> 在進(jìn)行聊天操作的時(shí)候,可以同時(shí)登陸兩個(gè)用戶(hù),用戶(hù)添加好友之后可以進(jìn)聊天。</p><p> 兩個(gè)好友聊天時(shí)可以實(shí)現(xiàn)視頻及語(yǔ)音聊天、遠(yuǎn)程控制及文件傳輸?shù)裙δ?,如圖5-4、5-5、5-6所示是一些相關(guān)的頁(yè)面設(shè)計(jì)。</p><p> ?。?)在兩個(gè)用戶(hù)
85、進(jìn)行視頻聊天操作的時(shí)候,會(huì)有如圖5-4所示的界面,被邀請(qǐng)的用戶(hù)可以選擇接受或者拒絕按鈕。</p><p><b> 圖5-4視頻聊天圖</b></p><p> 視頻聊天實(shí)現(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("對(duì)方拒絕了您的視頻邀請(qǐng)。");</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("對(duì)方中止了視頻通話(huà)。");</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("對(duì)方結(jié)束了視頻會(huì)話(huà)邀請(qǐng)。");</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("您同意了對(duì)方的視頻會(huì)話(huà)請(qǐng)求,正在啟動(dòng)多媒體設(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("您拒絕了對(duì)方的視頻會(huì)話(huà)請(qǐng)求。");</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("您中止了視頻通話(huà)。");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> this.AppendSysMessag
121、e("與對(duì)方的網(wǎng)絡(luò)連接中斷,視頻通話(huà)結(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> ?。?)當(dāng)用戶(hù)進(jìn)行交流的時(shí)候,使用最多的就是語(yǔ)音聊天功能。用戶(hù)A
123、邀請(qǐng)用戶(hù)B進(jìn)行語(yǔ)音聊天,在用戶(hù)B還未選擇接受或者拒絕操作之前還可以進(jìn)行掛斷操作。</p><p> 圖5-5 語(yǔ)音聊天圖</p><p> 語(yǔ)音功能實(shí)現(xiàn)代碼如下:</p><p> #region 語(yǔ)音聊天</p><p> private void 語(yǔ)音聊天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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于P2P的跨平臺(tái)即時(shí)通信軟件的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于P2P的即時(shí)通信系統(tǒng)設(shè)計(jì).pdf
- 基于JXTA的P2P即時(shí)通信系統(tǒng)的實(shí)現(xiàn).pdf
- 基于P2P的校園即時(shí)通信系統(tǒng)研究.pdf
- 基于p2p模式的即時(shí)通信系統(tǒng)的研究與實(shí)現(xiàn)
- 基于P2P的即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- P2P即時(shí)通信系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于RTR-RTCP的P2P企業(yè)即時(shí)通信系統(tǒng).pdf
- P2P網(wǎng)絡(luò)中安全即時(shí)通信技術(shù)的研究與實(shí)現(xiàn).pdf
- 基于Fit AP架構(gòu)的P2P即時(shí)通信定位系統(tǒng).pdf
- 基于XMPP的P2P即時(shí)通信系統(tǒng)的研究及實(shí)現(xiàn).pdf
- 基于WebRTC的P2P即時(shí)通信系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于P2P模式的即時(shí)通信系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于p2p校園即時(shí)通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 基于XMPP協(xié)議的P2P即時(shí)通訊軟件設(shè)計(jì).pdf
- 基于P2P模式的遠(yuǎn)程醫(yī)療監(jiān)控即時(shí)通信系統(tǒng)的開(kāi)發(fā).pdf
- 基于P2P的分布式PKI模型及在即時(shí)通信中的應(yīng)用.pdf
- 基于P2P校園即時(shí)通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于P2P即時(shí)通訊系統(tǒng)的研究.pdf
- 基于NAT穿透的P2P即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論