版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 隨著Internet技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)已經(jīng)成為人們生活中不可缺少的一部分,通過(guò)聊天室在線聊天已成為網(wǎng)絡(luò)上人與人之間溝通、交流和聯(lián)系的一種方式。</p><p> 為此,越來(lái)越多的網(wǎng)站開(kāi)始提供在線聊天的功能。與此同時(shí),聊天室也以其方便、快捷、低成本等優(yōu)勢(shì)受到眾多企業(yè)的青睞,很多企業(yè)的網(wǎng)站中也加入了聊
2、天室模塊,以達(dá)到增進(jìn)企業(yè)與消費(fèi)者之間、消費(fèi)者與消費(fèi)者之間相互交流的目的。</p><p> 本文是軟件工程在線聊天室系統(tǒng)的開(kāi)發(fā)說(shuō)明,重點(diǎn)運(yùn)用軟件工程知識(shí)對(duì)系統(tǒng)進(jìn)行分析、設(shè)計(jì)實(shí)現(xiàn)和測(cè)試的思想的具體描述,其中包括軟件生命周期的三個(gè)主要方面:軟件定義(問(wèn)題定義、可行性研究、需求分析)、軟件開(kāi)發(fā)(總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試)和運(yùn)行維護(hù)。通過(guò)實(shí)際的運(yùn)用軟件工程知識(shí)處理問(wèn)題,加強(qiáng)程序的規(guī)范性、清晰性、可靠性,并且使得程
3、序易于維護(hù)。本軟件使用C#進(jìn)行編寫,具有良好的兼容性且易于實(shí)現(xiàn)。聊天室操作簡(jiǎn)潔容易上手、結(jié)構(gòu)簡(jiǎn)單、查找方便、實(shí)用性強(qiáng)。</p><p> 關(guān)鍵詞:網(wǎng)絡(luò) 通信 套接字 連接</p><p><b> Abstract</b></p><p> With the rapid development of Internet technology
4、, network has become people to the indispensable part in life, through online chat has become a chat room on the network communication, communication between people and contact a kind of means. </p><p> The
5、refore, more web sites began to provide online to chat function. At the same time, the chat room with its convenient, quick, low cost advantage by numerous enterprise's favor, the many enterprise website also joined
6、the chat room, so as to promote enterprise module between consumers and consumers and consumers, communication between purpose. </p><p> This paper is a software engineering online chat room that focus on t
7、he development of the system, using the software engineering knowledge for system analysis, design and test of thought to realize description, including software life cycle of the three main aspects: software definition
8、(problem definition, feasibility study, needs analysis), software development (overall design, detailed design, code, test) and operation and maintenance. Through the practical using the software engineering kno</p>
9、;<p> Keyword: Network, communication, sockets, connection </p><p><b> 目 錄</b></p><p><b> 摘 要2</b></p><p> Abstract3</p><p><b
10、> 目 錄4</b></p><p><b> 第1章 緒論1</b></p><p> 1.1課題研究現(xiàn)狀分析1</p><p> 1.1.1本領(lǐng)域內(nèi)已開(kāi)展的研究工作2</p><p> 1.1.2已經(jīng)取得的研究成果3</p><p> 1.2
11、選題的目的及意義4</p><p> 1.3課題研究的主要內(nèi)容5</p><p> 第2章 系統(tǒng)需求分析6</p><p> 2.1 問(wèn)題的提出6</p><p> 2.2 系統(tǒng)的設(shè)計(jì)目標(biāo)6</p><p> 第3章 系統(tǒng)開(kāi)發(fā)的技術(shù)背景8</p><p> 3.1
12、Socket套接字介紹8</p><p> 3.2 .NET Framework 2.0介紹14</p><p> 第4章 系統(tǒng)具體實(shí)現(xiàn)15</p><p> 4.1概要設(shè)計(jì)15</p><p> 4.2定義服務(wù)器端和客戶端的通信結(jié)構(gòu)及含義16</p><p> 4.2.1客戶端16</p
13、><p> 4.2.2服務(wù)器端17</p><p> 4.3客戶端具體實(shí)現(xiàn)17</p><p> 4.4服務(wù)器端具體實(shí)現(xiàn)17</p><p> 第5章 系統(tǒng)測(cè)試19</p><p> 第6章 系統(tǒng)模塊設(shè)計(jì)及調(diào)試20</p><p> 6.1 系統(tǒng)登錄界面20</p&
14、gt;<p> 6.2 系統(tǒng)維護(hù)界面20</p><p> 6.3 用戶聊天界面21</p><p> 6.3.1聊天室模式21</p><p> 6.3.2私人聊天模式22</p><p> 6.4系統(tǒng)開(kāi)發(fā)思路22</p><p> 6.5需求的總結(jié)22</p>&
15、lt;p><b> 結(jié) 論25</b></p><p><b> 致 謝26</b></p><p><b> 參考文獻(xiàn)27</b></p><p><b> 附 錄128</b></p><p><b> 附 錄
16、230</b></p><p><b> 第1章 緒論</b></p><p> 隨著現(xiàn)代技術(shù)的不斷輸入和信息化的廣泛普及,網(wǎng)絡(luò)作為一種新興事物,在近些年得到了前所未有的普及和深入,網(wǎng)絡(luò)上的各種應(yīng)用層出不窮,給各個(gè)階層、各個(gè)年齡段的用戶提供了不同的個(gè)性化的服務(wù)。而現(xiàn)代中小型企業(yè)的領(lǐng)導(dǎo)認(rèn)識(shí)到進(jìn)一步提高企業(yè)信息化的必要性。為使企業(yè)能在瞬息萬(wàn)變的信息時(shí)代
17、生存下去,適應(yīng)激烈的市場(chǎng)競(jìng)爭(zhēng),現(xiàn)代企業(yè)要求正加員工之間的交流和通信能力,尤其是領(lǐng)導(dǎo)和員工之間的共同能力,實(shí)時(shí)的交流系統(tǒng)就是在這種條件下誕生的。系統(tǒng)開(kāi)發(fā)是一個(gè)十分復(fù)雜的系統(tǒng)工程。這里對(duì)系統(tǒng)開(kāi)發(fā)的基本過(guò)程和方法進(jìn)行介紹,列出相關(guān)文檔的示例并加以說(shuō)明。</p><p> 要提高市場(chǎng)競(jìng)爭(zhēng)力,就要對(duì)市場(chǎng)作充分的調(diào)查和詳細(xì)的研究,同時(shí)也要有好的客戶服務(wù)。企業(yè)要在復(fù)雜的環(huán)境下作出對(duì)策。員工與員工 員工與領(lǐng)導(dǎo)間的即時(shí)交流尤為重
18、要,網(wǎng)絡(luò)在線聊天系統(tǒng)對(duì)于企業(yè)來(lái)說(shuō)就是一種交流和通信的平臺(tái),本系統(tǒng)能夠成為中小型企業(yè)的交流通信的理想平臺(tái)。如能做到信息的及時(shí)的反饋,即時(shí)的處理并作出相應(yīng)的行動(dòng),將能進(jìn)一步提高中小型企業(yè)在現(xiàn)代經(jīng)濟(jì)市場(chǎng)的競(jìng)爭(zhēng)能力。</p><p> 網(wǎng)絡(luò)通信是網(wǎng)絡(luò)應(yīng)用的重要體現(xiàn)方面。網(wǎng)上即時(shí)通信則是網(wǎng)絡(luò)應(yīng)用的重要體現(xiàn)方面。本聊天系統(tǒng)主要應(yīng)用于小型企業(yè),學(xué)?;蛐⌒途钟蚓W(wǎng)內(nèi)部使用。本應(yīng)用程序使短距離交流更加快捷和便利,更能高效率的體現(xiàn)現(xiàn)
19、代即時(shí)通信的特點(diǎn)。</p><p> 本系統(tǒng)能夠滿足中小型企業(yè),學(xué)校的內(nèi)部網(wǎng)絡(luò)即時(shí)通信的需要,在內(nèi)部網(wǎng)絡(luò)正常環(huán)境的運(yùn)營(yíng)下,提供即時(shí)通信的能力,本系統(tǒng)使用Visual C#開(kāi)發(fā),本系統(tǒng)能夠?yàn)橹行⌒推髽I(yè)協(xié)同工作,相互間的交流提供了有力的工具,運(yùn)用在局域網(wǎng)的本系統(tǒng),能夠?yàn)槠髽I(yè)員工的交流提供幫助,有利于提高工作效率。</p><p><b> 課題研究現(xiàn)狀分析</b>&l
20、t;/p><p> 1996年11月ICQ在全球發(fā)布,拉開(kāi)了互聯(lián)網(wǎng)IM(Instant Messenger,即時(shí)通訊)應(yīng)用的序幕。就是這樣一款小軟件在短短數(shù)年時(shí)間里發(fā)展出一個(gè)巨大的IM產(chǎn)業(yè)。</p><p> 時(shí)至今日,即時(shí)性通訊工具早已成為最熱門的網(wǎng)絡(luò)應(yīng)用之一。國(guó)內(nèi)外的聊天工具舉不勝數(shù)。ICQ作為全球第一款即時(shí)性通訊工具,在經(jīng)過(guò)短短數(shù)年的發(fā)展,其行業(yè)內(nèi)的地位如今已是無(wú)人能夠撼動(dòng)。ICQ名
21、字取自英文“I seek you”的諧音,即是“我找你”的意思。最初的ICQ只有兩個(gè)特性,即用戶列表和即時(shí)聊天。但一經(jīng)推出就受到眾多網(wǎng)民的喜愛(ài),6個(gè)月內(nèi)其注冊(cè)用戶迅速攀升至85萬(wàn),1998年它的用戶數(shù)量更是翻了10數(shù)倍,達(dá)到了1200萬(wàn)人。ICQ的迅猛發(fā)展也讓當(dāng)時(shí)的互聯(lián)網(wǎng)領(lǐng)頭羊Yahoo和在桌面軟件領(lǐng)域獨(dú)步天下的微軟嗅到了商機(jī),它們分別推出了Yahoo Messenger、MSN Messenger和曇花一現(xiàn)的MS Chat。即時(shí)通訊市
22、場(chǎng)雛形頓顯,有了國(guó)際互聯(lián)網(wǎng)巨頭和最大軟件公司的融入,即時(shí)通訊時(shí)代的大幕就此徐徐拉開(kāi)。</p><p> 當(dāng)ICQ風(fēng)行全球的時(shí)候,在國(guó)內(nèi)各種仿ICQ的中文IM軟件也紛紛推出,時(shí)至今日,占據(jù)國(guó)內(nèi)的市場(chǎng)的主要是騰訊公司的QQ、微軟的MSN、雅虎的雅虎通等。其中騰訊公司的QQ以占據(jù)了國(guó)內(nèi)70%以上的市場(chǎng)。</p><p> 隨著IM應(yīng)用的深入,其功能早已超越了初期的即時(shí)文字聊天。表情圖標(biāo)早已成
23、為各個(gè)IM軟件的標(biāo)準(zhǔn)功能,文件傳輸、語(yǔ)音/視頻聊天、游戲、網(wǎng)上交友等高級(jí)功能也正越來(lái)越多地被集成進(jìn)入IM應(yīng)用。事實(shí)表明,現(xiàn)在的IM已不再是一個(gè)簡(jiǎn)單的溝通工具,而是一個(gè)信息資訊、交流互動(dòng)、休閑娛樂(lè)中心,IM平臺(tái)上的語(yǔ)音、視頻、音樂(lè)點(diǎn)播、信息共享等新應(yīng)用層出不窮。發(fā)展到現(xiàn)在,IM軟件越來(lái)越成熟,IM產(chǎn)業(yè)鏈也已經(jīng)形成,已經(jīng)成為現(xiàn)代人和現(xiàn)代經(jīng)濟(jì)中不可或缺的一部份,相信未來(lái)IM軟件的道路會(huì)更加寬廣和精彩。</p><p>
24、 21世紀(jì)是信息的時(shí)代,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,信息在傳遞方面也有了嶄新的一面。現(xiàn)今聊天軟件成為信息傳遞最為廣泛的應(yīng)用工具,它發(fā)揮了即時(shí)性通信的特點(diǎn),可以讓用戶在第一時(shí)間內(nèi)得到信息的交流,它不僅可以讓用戶進(jìn)行文字聊天,而且還增添語(yǔ)音、視頻功能。這樣可以讓網(wǎng)上的好友身臨其境的面對(duì)面的聊天,讓彼此之間更為深入的了解。人性化的設(shè)計(jì)讓每個(gè)用戶都可以得心應(yīng)手的使用,從而獲得更多人的青睞。Internet的出現(xiàn)連通了整個(gè)世界,而聊天軟件的出現(xiàn)則連通
25、了每一位網(wǎng)上的用戶。隨著網(wǎng)絡(luò)應(yīng)用的發(fā)展,聊天軟件已經(jīng)成為最熱門的網(wǎng)絡(luò)應(yīng)用之一。經(jīng)歷了近幾年突飛猛進(jìn)的發(fā)展之后,即時(shí)通訊工具早已不再是簡(jiǎn)單的互聯(lián)網(wǎng)通訊工具,它已經(jīng)成為一個(gè)集互動(dòng)交流、休閑娛樂(lè)、信息管理為一體的多元化互聯(lián)網(wǎng)應(yīng)用平臺(tái)。總之,聊天軟件的出現(xiàn)給人們彼此之間的溝通帶來(lái)了無(wú)比的方便,人們可以通過(guò)聊天軟件建立深刻的友情,讓人們?cè)诨ヂ?lián)網(wǎng)上的交流更加充滿活力與生機(jī)。</p><p> 本領(lǐng)域內(nèi)已開(kāi)展的研究工作<
26、;/p><p> 聊天軟件作為使用最為廣泛的即時(shí)性通訊工具,它在擁有文字聊天基礎(chǔ)功能的同時(shí),為滿足用戶的需求,還增加了文件傳輸、語(yǔ)音、視頻聊天等主要的功能,成為現(xiàn)在最為主流的網(wǎng)上應(yīng)用軟件。本論文主要對(duì)聊天軟件的文字聊天、文件傳輸功能進(jìn)行分析與研究,總結(jié)出實(shí)現(xiàn)的相關(guān)理論與知識(shí)。</p><p><b> 1. 理論研究基礎(chǔ)</b></p><p>
27、; ?。?)套接字(Sockets)</p><p> ?。?)C# Windows Socket類</p><p> 2. 技術(shù)層面的支持</p><p> Winsock是一套開(kāi)放的,支持多種協(xié)議的Windows下網(wǎng)絡(luò)編程接口,是Windows網(wǎng)絡(luò)編程實(shí)是上的標(biāo)準(zhǔn).應(yīng)用程序通過(guò)調(diào)用Winsock的API實(shí)現(xiàn)相互間的通信,而Winsock利用下層的網(wǎng)絡(luò)通信協(xié)議
28、功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通信工作。</p><p> Microsoft Visual Studio.NET (VS.NET)是Microsoft公司為適應(yīng)Internet高速發(fā)展的需要,而推出的新的開(kāi)發(fā)平臺(tái)(集成開(kāi)發(fā)環(huán)境)。2003年,Microsoft 公司發(fā)布了VS.NET 2003,提供了在Windows操作系統(tǒng)下開(kāi)發(fā)各類基于.NET Framework 1.1的全新的應(yīng)用程序開(kāi)發(fā)平臺(tái);2005年底
29、,Microsoft公司又發(fā)布了基于.NET Framework 2.0的VS.NET 2005開(kāi)發(fā)平臺(tái),植入了適用于大型團(tuán)隊(duì)開(kāi)發(fā)的各種優(yōu)秀的復(fù)雜功能,并于2006年1月發(fā)布了VS.NET 2005 Professional 簡(jiǎn)體中文版。</p><p><b> 已經(jīng)取得的研究成果</b></p><p> QQ:國(guó)內(nèi)用戶量第一。在2004年就已經(jīng)擁有2.26億
30、注冊(cè)用戶、500多萬(wàn)收費(fèi)用戶,而且每天還在以幾十萬(wàn)的數(shù)量遞增著。與其他中文通訊軟件相比,騰訊QQ以其漂亮的界面、合理的設(shè)計(jì)、良好的易用性、強(qiáng)大的功能(如:隱藏功能、分組功能等),穩(wěn)定高效的系統(tǒng)運(yùn)行,贏得了用戶的青睞,如果你不嫌它廣告較多的話,的確是不錯(cuò)的聊天軟件。提供了大量卡通圖案,而且引入了立體風(fēng)格,形象更趨于卡通化。新版QQ同時(shí)增加了自定義動(dòng)態(tài)表情。支持網(wǎng)友自定義顯示系統(tǒng)表情的行數(shù),靈活方便的快捷鍵設(shè)置,把熱鍵設(shè)置為與表情相同的字或
31、字母,炫彩漢字和字母的搭配可與MSN媲美。所以,無(wú)論是從用戶數(shù)量還是公眾影響力來(lái)看,QQ都是國(guó)內(nèi)即時(shí)通訊軟件市場(chǎng)上無(wú)可爭(zhēng)議的“老大”。QQ最不討人喜歡的是廣告大量存在,而且似乎一直在變本加厲;安裝的可定制性差,最讓人無(wú)法忍受的莫過(guò)于騰訊瀏覽器,這個(gè)并不是所有人都中意的多窗口瀏覽器,一旦安裝QQ就會(huì)被安裝,而且會(huì)更改很多系統(tǒng)設(shè)置,使普通用戶被逼無(wú)奈只能使用該瀏覽器;隨著視頻聊天等功能的整合,QQ的資源消耗十分嚴(yán)重:安裝文件的大小大約是MS
32、N的4倍,安裝后的文件夾為80MB(MSN為5.5MB),內(nèi)存占用</p><p> MSN:全球用戶量居前,約有5000萬(wàn)用戶,國(guó)內(nèi)用戶量應(yīng)該第二。在人們的印象中,MSN更多的偏重于辦公階層用戶,傻瓜式操控性讓我們能夠在最短的時(shí)間內(nèi)掌握它的使用要決。主界面相當(dāng)?shù)那逅?,卡通味不濃。但軟件主界面過(guò)于寬大,占用了相當(dāng)?shù)淖烂婵臻g,不像QQ一樣小巧玲瓏。現(xiàn)在的MSN 7.0版本,更給人們一種耳目一新的感覺(jué),對(duì)于那些喜歡
33、時(shí)尚和追求多變的上班族而言是個(gè)不錯(cuò)的選擇。MSN最讓人津津樂(lè)道的功能就是把漢字做成彩色的表情圖片,熱鍵設(shè)置為同樣的字,就可以在聊天時(shí)候打出五彩的漢字,效果炫麗。但不支持批量導(dǎo)入導(dǎo)出,可顯示出的自定義表情只有10個(gè),用起來(lái)還是有諸多不便。支持手寫;在占用資源上比同類軟件優(yōu)勝;穩(wěn)定性超強(qiáng);語(yǔ)音與視頻質(zhì)量上佳,開(kāi)著語(yǔ)音打CS,一樣穩(wěn)定清晰(QQ則斷斷續(xù)續(xù),聽(tīng)不清楚);最讓人興奮不已的是,從6.0版本開(kāi)始,可以穿透防火墻進(jìn)行文件共享。缺點(diǎn):不能
34、向離線用戶發(fā)送消息,無(wú)法自定義離線狀態(tài),在新版本中依然未得到很好的解決;增加用戶時(shí)也不如QQ方便,須通過(guò)其“繁忙”的網(wǎng)頁(yè)來(lái)進(jìn)行用戶的搜索和添加,而且搜索網(wǎng)站還是繁體的。</p><p> ICQ:作為同類軟件的始祖,目前注冊(cè)用戶超過(guò)1.5億,在全球擁有廣泛的用戶支持,但缺乏中國(guó)本土化支持仍是其最大缺點(diǎn)。</p><p> AIM:注冊(cè)用戶數(shù)量居全球(不含中國(guó))第二,僅次于ICQ。<
35、;/p><p> UC:作為后起之秀的UC,具有一些QQ會(huì)員擁有的功能,其免費(fèi)網(wǎng)絡(luò)硬盤服務(wù)提供了文件上傳、下載服務(wù),功能簡(jiǎn)單實(shí)用。UC普通用戶的網(wǎng)民所享有的空間(32MB)是QQ普通用戶(16MB)的一倍。更棒的是,只要UC的在線時(shí)間累計(jì)達(dá)到了100小時(shí)/500小時(shí),網(wǎng)絡(luò)硬盤的容量可以分別免費(fèi)升級(jí)為64MB/128MB。UC的聊天功能支持動(dòng)畫的顯示和發(fā)送。點(diǎn)擊UC聊天窗口的按鈕,選擇本地動(dòng)畫發(fā)送,在本地硬盤選擇想要
36、發(fā)送的圖片,確認(rèn)后選擇發(fā)送,就可以給在線的好友發(fā)送動(dòng)畫圖片了。有自動(dòng)聊天功能,不管在什么時(shí)候,只要打開(kāi)UC,都會(huì)有“人”在線親切地對(duì)你噓寒問(wèn)暖。如今無(wú)論是注冊(cè)用戶還是更有價(jià)值的同時(shí)在線人數(shù),UC都搶掉QQ百分之五以上的市場(chǎng)份額(QQ依然是霸主,但現(xiàn)在已經(jīng)無(wú)法一手遮天了)。假以時(shí)日也許會(huì)占領(lǐng)我們后面的一代人。</p><p> 網(wǎng)易泡泡:在無(wú)廣告打擾、整合網(wǎng)易服務(wù)上做得比較出色。大部分聊天功與QQ是類似,但也有一
37、些特有的功能:支持用戶自選圖片作為頭像;有“常用短語(yǔ)”的服務(wù),提供了許多聊天妙語(yǔ);可對(duì)每個(gè)聯(lián)系人設(shè)置選擇性隱身,右鍵單擊聯(lián)系人即可(這點(diǎn)QQ也有一個(gè)選項(xiàng)“如果該好友上線,則自動(dòng)對(duì)其隱身”)。</p><p><b> 其他比較:</b></p><p> 軟件名稱 表情可愛(ài)度 使用便捷性 表情效果 創(chuàng)新性 </p>&
38、lt;p> MSN ★★★☆ ★★★★ ★★★★ ★★★★★</p><p> 朗瑪U(kuò)C ★★★ ★ ★★★☆ ★★★ ★★★☆ </p><p> 騰訊Q Q ★★★★☆ ★★ ★★☆ ★★★★☆ ★★★★☆</p><p><b>
39、選題的目的及意義</b></p><p> ?。?)提供即時(shí)通信的能力。.</p><p> ?。?)提高中小型企業(yè)在現(xiàn)代經(jīng)濟(jì)市場(chǎng)的競(jìng)爭(zhēng)能力。</p><p> ?。?)能夠?yàn)槠髽I(yè)員工的交流提供幫助。</p><p><b> 課題研究的主要內(nèi)容</b></p><p> 根據(jù)網(wǎng)絡(luò)
40、應(yīng)用程序的特點(diǎn),網(wǎng)絡(luò)在線聊天系統(tǒng)應(yīng)就有即時(shí),快速的特點(diǎn)。服務(wù)器端和客戶端應(yīng)就有不同的功能特性。對(duì)于服務(wù)器端應(yīng)能夠正確地建立與客戶端的連接并能正確地?cái)嚅_(kāi),能即時(shí)地接收、處理和發(fā)送接收到的數(shù)據(jù)。能及時(shí)地通知在線用戶當(dāng)前好友在線狀況,能夠處理非正常數(shù)據(jù)的能力。對(duì)于客戶端應(yīng)能夠快速地檢查是否能夠連接到服務(wù)器端。能正確的獲得和反映當(dāng)前好友在線情況。能夠正確的與特定好友交流。能及時(shí)地接收到服務(wù)器端地?cái)?shù)據(jù),并能即時(shí)處理數(shù)據(jù),并能將處理結(jié)果反映給用戶。
41、</p><p><b> 1. 實(shí)時(shí)好友登陸</b></p><p> 當(dāng)好友登陸或離開(kāi)聊天室,服務(wù)器端有能力通知所有其他在線用戶。</p><p> 2. 收發(fā)消息同步 </p><p> 當(dāng)一用戶向其他的好友發(fā)出消息,發(fā)送接收端的用戶應(yīng)能及時(shí)接收到消息。</p><p> 3. 服
42、務(wù)器關(guān)閉通知 </p><p> 當(dāng)服務(wù)器因故障或維護(hù)需要暫時(shí)關(guān)閉,應(yīng)有通知在線用戶的能力。</p><p> 4. 隱私消息模式 </p><p> 當(dāng)用戶選擇發(fā)送消息為私聊的模式。其他在線用戶不能看到此條消息。</p><p> 第2章 系統(tǒng)需求分析</p><p> 隨著經(jīng)濟(jì)全球化的推進(jìn)以及企業(yè)激烈的
43、競(jìng)爭(zhēng),改善企業(yè)內(nèi)部及整個(gè)供應(yīng)鏈各環(huán)節(jié)的管理、調(diào)度及資源配置,迅速適應(yīng)客戶的新需求和市場(chǎng)新機(jī)遇,是企業(yè)贏得競(jìng)爭(zhēng)勝利的決定性因素。</p><p> 需求分析是軟件分析中的一個(gè)重要步驟。它的基本任務(wù)是要準(zhǔn)確地分析出系統(tǒng)應(yīng)用者的需要,以及系統(tǒng)目標(biāo)必須具備哪些功能。這些功能必須準(zhǔn)確地,完整地體現(xiàn)出用戶的要求。</p><p><b> 2.1 問(wèn)題的提出</b></
44、p><p> 需求分析是軟件分析中的一個(gè)重要步驟。它的基本任務(wù)是要準(zhǔn)確地分析出系統(tǒng)應(yīng)用者的需要,以及系統(tǒng)目標(biāo)必須具備哪些功能。這些功能必須準(zhǔn)確地,完整地體現(xiàn)出用戶的要求。</p><p> 2.2 系統(tǒng)的設(shè)計(jì)目標(biāo)</p><p> 根據(jù)網(wǎng)絡(luò)應(yīng)用程序的特點(diǎn),網(wǎng)絡(luò)在線聊天系統(tǒng)應(yīng)就有即時(shí),快速的特點(diǎn)。服務(wù)器端和客戶端應(yīng)就有不同的功能特性。對(duì)于服務(wù)器端應(yīng)能夠正確地建立與客
45、戶端的連接并能正確地?cái)嚅_(kāi),能即時(shí)地接收、處理和發(fā)送接收到的數(shù)據(jù)。能及時(shí)地通知在線用戶當(dāng)前好友在線狀況,能夠處理非正常數(shù)據(jù)的能力。對(duì)于客戶端應(yīng)能夠快速地檢查是否能夠連接到服務(wù)器端。能正確的獲得和反映當(dāng)前好友在線情況。能夠正確的與特定好友交流。能及時(shí)地接收到服務(wù)器端地?cái)?shù)據(jù),并能即時(shí)處理數(shù)據(jù),并能將處理結(jié)果反映給用戶。</p><p><b> 服務(wù)器端:</b></p><
46、p> ?。?)能夠正確地、無(wú)沖突地啟動(dòng)服務(wù)器。</p><p> (2)監(jiān)聽(tīng)指定的端口,等待用戶的連接。</p><p> ?。?)建立與客戶端的邏輯連接,并能通知其他好友。</p><p> (4)向新進(jìn)入的好友發(fā)出已上線的好友名單。</p><p> ?。?)接收客戶端的消息請(qǐng)求,并能正確無(wú)誤地處理消息,并能發(fā)出消息到客戶端。&
47、lt;/p><p> ?。?)反映當(dāng)前在線人數(shù)和在線好友狀況。</p><p> ?。?)及時(shí)地反映發(fā)出地消息和聊天消息。</p><p> ?。?)當(dāng)好友斷開(kāi)與服務(wù)器端地連接時(shí),服務(wù)器能夠正確地?cái)嚅_(kāi)連接,并通知其他用戶。</p><p> ?。?)當(dāng)用戶違反聊天系統(tǒng)規(guī)定時(shí),服務(wù)器系統(tǒng)管理員能夠斷開(kāi)與此用戶的連接。</p><
48、p> 當(dāng)服務(wù)器關(guān)閉時(shí),應(yīng)通知所有用戶。</p><p><b> 客戶端:</b></p><p> ?。?)能夠正確啟動(dòng)應(yīng)用程序,并能向服務(wù)器發(fā)出連接請(qǐng)求。</p><p> (2)反映當(dāng)前好友在線情況。</p><p> ?。?)能夠向群體或指定好友發(fā)出消息</p><p> ?。?/p>
49、4)能夠及時(shí)接收好友發(fā)出消息,并通知用戶。</p><p> ?。?)能夠正確地?cái)嚅_(kāi)與服務(wù)器端地的連接。</p><p> 第3章 系統(tǒng)開(kāi)發(fā)的技術(shù)背景</p><p> 3.1 Socket套接字介紹</p><p> Winsock是一套開(kāi)放的,支持多種協(xié)議的Windows下網(wǎng)絡(luò)編程接口,是Windows網(wǎng)絡(luò)編程實(shí)是上的標(biāo)準(zhǔn).應(yīng)用程
50、序通過(guò)調(diào)用Winsock的API實(shí)現(xiàn)相互間的通信,而Winsock利用下層的網(wǎng)絡(luò)通信協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通信工作.</p><p> 1. 套接字(Sockets)</p><p> 套接字是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的操作單元.可以將套接字看作不同主機(jī)間的進(jìn)程進(jìn)行雙向通信的端點(diǎn),它構(gòu)成了單個(gè)主機(jī)內(nèi)及整個(gè)網(wǎng)絡(luò)間的編程界面.套接字存在于通信域中.通信域是為了
51、處理一般的線程通過(guò)套接字通信而引進(jìn)的一種抽象概念.套接字通過(guò)通常和同一個(gè)域中的套接字交換數(shù)據(jù)(數(shù)據(jù)交換也可能穿越域的界限,但這時(shí)一定要執(zhí)行某種解釋程序).Winsock規(guī)范支持單一的通信域,即Internet域.各種進(jìn)程使用這個(gè)域互相之間用Internet協(xié)議簇來(lái)進(jìn)行通信(Winsock 1.1以上的版本支持其他的域)。</p><p> 套接字可以根據(jù)通信性質(zhì)分類,這種性質(zhì)對(duì)于用戶時(shí)可見(jiàn)的.應(yīng)用程序一般僅在同
52、一類的套接字間通信.不過(guò)只要底層的通信協(xié)議允許,不同類型的套接字間也照樣可以通信</p><p> 進(jìn)入九十年代后,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,很多數(shù)據(jù)處理系統(tǒng)都采用開(kāi)放系統(tǒng)結(jié)構(gòu)的客戶機(jī)/服務(wù)器網(wǎng)絡(luò)模式,即客戶機(jī)提出任務(wù)請(qǐng)求,通過(guò)網(wǎng)絡(luò)發(fā)送給服務(wù)器,由服務(wù)器做相應(yīng)處理,執(zhí)行被請(qǐng)求的任務(wù),然后將結(jié)果返回給客戶機(jī)。例如:銀行ATM的前置機(jī)和數(shù)據(jù)處理的主機(jī)之間即構(gòu)成客戶機(jī)/服務(wù)器網(wǎng)絡(luò)模式;電話銀行的前置機(jī)和銀行數(shù)據(jù)處理
53、機(jī)之間也構(gòu)成這種網(wǎng)絡(luò)模式結(jié)構(gòu)等。這樣,如何在前置機(jī)和數(shù)據(jù)主機(jī)之間進(jìn)行信息交換,即進(jìn)程網(wǎng)絡(luò)通信,就成為實(shí)現(xiàn)這種網(wǎng)絡(luò)模式的基礎(chǔ)。而TCP/IP的套接字技術(shù)是解這一問(wèn)題的有力工具。它從提出時(shí)就一直發(fā)揮著愈來(lái)愈重要的作用,并已成為UNIX操作系統(tǒng)下TCP/IP網(wǎng)絡(luò)編程標(biāo)準(zhǔn);甚至WINDOW、JAVA都配有它的通用接口。有了這個(gè)強(qiáng)有力的工具,我們可以實(shí)現(xiàn)異種機(jī)、異種操作系統(tǒng)應(yīng)用程序間的相互連接和通信。套接字(sockets)是支持TCP/IP協(xié)議
54、的網(wǎng)絡(luò)通信的基本操作單元??梢詫⑻捉幼挚醋鞑煌鳈C(jī)間的進(jìn)程進(jìn)行雙向通信的端點(diǎn)。它構(gòu)成了在單個(gè)主機(jī)內(nèi)及整個(gè)網(wǎng)際間的編程界面。一般來(lái)說(shuō),跨機(jī)應(yīng)用進(jìn)程之間要在網(wǎng)絡(luò)環(huán)境下進(jìn)行通信,必須要在網(wǎng)絡(luò)的每一端都要建立一個(gè)套接字,兩個(gè)套接字之間是可以建立連接的,也</p><p> (1) 字節(jié)流套接字</p><p> 字節(jié)流不按記錄定界,在TCP/IP協(xié)議簇中對(duì)應(yīng)TCP協(xié)議,即傳輸控制協(xié)議(Tran
55、smitionControlProtocol)。它是一個(gè)提供給用戶進(jìn)程可靠的全雙工的面向連接的協(xié)議,大多數(shù)INTERNET應(yīng)用程序如ftp、telnet使用TCP協(xié)議。通信端點(diǎn)使用TCP對(duì)應(yīng)的INTERNET地址互相連接,可保證按正確的順序以及單一和可靠的地址傳輸數(shù)據(jù)。由于它是字節(jié)流,所以包長(zhǎng)包沒(méi)有限制,信包傳輸也不重復(fù),因而是一種常用的套接字類型。</p><p> 流套接字提供雙向的,有序的,無(wú)重復(fù)并且無(wú)記
56、錄邊界的數(shù)據(jù)流服務(wù),它適應(yīng)于處理大量數(shù)據(jù).網(wǎng)絡(luò)傳輸層可以將數(shù)據(jù)分散或集中到合適尺寸的數(shù)據(jù)包中。</p><p> 流套接字是面向連接的,通信雙方進(jìn)行數(shù)據(jù)交換之前,必須建立一條路徑,這樣即確定了它們之間存在的路徑,又保證了雙方都是活動(dòng)的,可彼此相應(yīng)的,但在通信雙方之間建立一個(gè)通信信道需要很多開(kāi)支.除此以外,大部分面向連接的協(xié)議為保證發(fā)送無(wú)誤,可能會(huì)需要執(zhí)行額外的計(jì)算機(jī)來(lái)驗(yàn)證正確性,為此會(huì)進(jìn)一步增加開(kāi)支。</
57、p><p> (2) 數(shù)據(jù)報(bào)套接字</p><p> 數(shù)據(jù)報(bào)對(duì)應(yīng)記錄型數(shù)據(jù)流,在TCP/IP協(xié)議簇中對(duì)應(yīng)UDP協(xié)議,即用戶數(shù)據(jù)報(bào)協(xié)議(UserDatagramProtocol)。利用數(shù)據(jù)報(bào)服務(wù)可實(shí)現(xiàn)一些簡(jiǎn)單的網(wǎng)絡(luò)服務(wù),如網(wǎng)點(diǎn)檢測(cè)程序PING。由于不建立連接,數(shù)據(jù)報(bào)協(xié)議比連接協(xié)議快。但不能保證所有數(shù)據(jù)都準(zhǔn)確有序地到達(dá)目的地。不保證順序性、可靠性和無(wú)重復(fù)性。它是無(wú)連接的服務(wù),以獨(dú)立的信包進(jìn)行傳
58、輸,通信端點(diǎn)使用UDP對(duì)應(yīng)的INTERNET地址。雙方不需互連,按固定的最大長(zhǎng)度進(jìn)行傳輸,因而適用于單個(gè)報(bào)文傳輸,或較小文件的傳輸。</p><p> 數(shù)據(jù)報(bào)套接字支持雙向的數(shù)據(jù)流,但不保證數(shù)據(jù)傳輸?shù)目煽啃?有序性,和無(wú)重復(fù)性.也就是說(shuō),一個(gè)從數(shù)據(jù)報(bào)套接字接受信息的進(jìn)程有可能發(fā)現(xiàn)信息重復(fù),或者和發(fā)出時(shí)間順序不同的情況.此外,數(shù)據(jù)報(bào)套接字的一個(gè)重要特點(diǎn)是它保留了記錄邊界。</p><p>
59、 數(shù)據(jù)報(bào)套接字是無(wú)連接的,它不保證接受端是否在監(jiān)聽(tīng),類似郵政服務(wù):發(fā)信人把信裝入郵箱即可,至于收信人是否收到這封信或郵局是否會(huì)因?yàn)楸╋L(fēng)雨未能按時(shí)將信件投入收信人處等等,發(fā)信人都不得而知.因此,數(shù)據(jù)報(bào)并不十分可靠,需有程序員負(fù)責(zé)管理數(shù)據(jù)的排序和可靠性)。</p><p> 2. 套接字的編程要點(diǎn)及過(guò)程</p><p> 不論何種套接字編程,均采用客戶機(jī)/服務(wù)器方式,其運(yùn)作過(guò)程基本類似,
60、限于篇幅,這里僅介紹字節(jié)流套接字。字節(jié)流套按字的服務(wù)進(jìn)程和客戶進(jìn)程,在通信前必須創(chuàng)建各自的套接字以建立連接,然后對(duì)相應(yīng)的套接字進(jìn)行“讀”、“寫”操作,實(shí)現(xiàn)信息的交換。服務(wù)器進(jìn)程創(chuàng)建套接字。服務(wù)進(jìn)程總是先于客戶進(jìn)程啟動(dòng),服務(wù)進(jìn)程首先調(diào)用socket()函數(shù)創(chuàng)建自已端的一個(gè)字節(jié)流套接字,并提供三個(gè)參數(shù):網(wǎng)絡(luò)地址類型,一般取AF_INEF(AdressfamilyInterNET);套接字類型,這里取SOCK_STREAM;網(wǎng)絡(luò)協(xié)議,缺省為T
61、CP/IP協(xié)議,對(duì)應(yīng)參數(shù)為0。給套接字地址變量賦初值。在生成套接字后,要用服務(wù)器的地址先對(duì)sockaddr_in結(jié)構(gòu)變量賦初值。sockaddr_in它只適用INTERNET地址類型,含有INTERNET套接字地址類型、IP端口號(hào)、IP地址等信息。地址類型可取定為AF_INET,IP地址對(duì)服務(wù)器可取任意合法地址INADDR_ANY。IP端口號(hào)可由用戶設(shè)定,但要注意主機(jī)字節(jié)順序向網(wǎng)絡(luò)字節(jié)順序的轉(zhuǎn)換。給套接字命名。由socket()函數(shù)創(chuàng)建
62、的套接字是沒(méi)有名字的。所謂命名,就是用bind()函數(shù)</p><p><b> 3. 基本概念</b></p><p><b> (1) 帶外數(shù)據(jù)</b></p><p> 帶外數(shù)據(jù),也稱為TCP緊急數(shù)據(jù),它是相連的每一對(duì)流套接字間的一個(gè)邏輯上獨(dú)立的傳輸通道,帶外數(shù)據(jù)是獨(dú)立于普通數(shù)據(jù)傳輸給用戶的,這一抽象要求帶外數(shù)
63、據(jù)設(shè)備必須支持每一時(shí)刻僅有一個(gè)帶外數(shù)據(jù)信息等候發(fā)送。對(duì)于僅支持帶外數(shù)據(jù)的通信協(xié)議來(lái)說(shuō)(例如緊急數(shù)據(jù)是與普通數(shù)據(jù)在同一序列發(fā)送),系統(tǒng)通常把緊急數(shù)據(jù)從普通數(shù)據(jù)中分離出來(lái)單獨(dú)存放。這就允許用戶可以在順序接受緊急數(shù)據(jù)和非順序接收緊急數(shù)據(jù)之間作出選擇。</p><p><b> (2) 廣播</b></p><p> 數(shù)據(jù)報(bào)套接字可以用來(lái)向許多系統(tǒng)支持的網(wǎng)絡(luò)發(fā)送廣播數(shù)據(jù)包
64、。要實(shí)現(xiàn)這種功能,網(wǎng)絡(luò)必須支持廣播功能。為此系統(tǒng)軟件并不提供對(duì)廣播功能的任何模擬。廣播信息將會(huì)給網(wǎng)絡(luò)造成極重的負(fù)擔(dān),為此它們要求網(wǎng)絡(luò)上的每臺(tái)主機(jī)都為他們服務(wù),所以發(fā)送廣播數(shù)據(jù)包的能力被限制于那些用顯式標(biāo)記了允許廣播的套接字中。廣播通常應(yīng)用于以下兩種情況:</p><p> 一個(gè)應(yīng)用程序希望在本地網(wǎng)絡(luò)中找到一個(gè)資源。而應(yīng)用程序?qū)υ撡Y源的地址又沒(méi)有任何先驗(yàn)的知識(shí)。</p><p> 一些重
65、要功能,例如路由要求把它們的信息發(fā)送給所有可以找到的鄰機(jī)。</p><p> 被廣播信息的目的地址取決于這一信息將在何種網(wǎng)絡(luò)上廣播。Internet域中支持一個(gè)速記地址-INADDR_BROADCAST用于廣播。由于使用廣播以前必須綁定一個(gè)數(shù)據(jù)包套接字,所以所有收到的廣播消息都帶有發(fā)送者的地址和端口。</p><p><b> (3) 字節(jié)順序</b></p
66、><p> 不同的計(jì)算機(jī)有時(shí)使用不同的字節(jié)順序存儲(chǔ)數(shù)據(jù)。例如,基于Intel處理器的計(jì)算機(jī)和Macintosh計(jì)算機(jī)使用了相反的字節(jié)排序順序。Intel的字節(jié)順序被成為“Little-Endian”,它與網(wǎng)絡(luò)的字節(jié)排序順序“Big-Endian”排序順序相反。</p><p> 任何從Winsock函數(shù)對(duì)IP地址和端口號(hào)的引用和傳送給Winsock函數(shù)的IP地址和端口號(hào)均是按照網(wǎng)絡(luò)順序組織
67、的,這也包括了sockaddr_in這一數(shù)據(jù)結(jié)構(gòu)中的IP地址域和端口域</p><p> 考慮到一個(gè)應(yīng)用程序通常用與“時(shí)間”服務(wù)對(duì)應(yīng)的端口來(lái)和服務(wù)器連接,而服務(wù)器提供某些機(jī)制來(lái)通知用戶使用另一端口。為此getservbyname函數(shù)返回的端口已經(jīng)是網(wǎng)絡(luò)順序了,可以直接使用來(lái)組織成一個(gè)地址,而不需要進(jìn)行轉(zhuǎn)換。然而如果從主機(jī)順序轉(zhuǎn)換成網(wǎng)絡(luò)順序。相應(yīng)地,如果應(yīng)用程序希望顯示包含于某一地址中地端口號(hào),則這一端口號(hào)就必須
68、在被顯示前從網(wǎng)絡(luò)順序轉(zhuǎn)換到主機(jī)順序。</p><p> (4) 阻塞和非阻塞</p><p> 套接字可以處于阻塞模式或非阻塞模式。調(diào)用任何一個(gè)阻塞模式地函數(shù),都回產(chǎn)生相同地后果-耗費(fèi)或長(zhǎng)或短地時(shí)間等待操作地完成。而當(dāng)套接字處于非阻塞模式時(shí),API函數(shù)的調(diào)用會(huì)立即返回,大多數(shù)情況這些調(diào)用都回“失敗”,并返回一個(gè)WASEWOULDBLOCK的錯(cuò)誤,它意味著請(qǐng)求的操作在調(diào)用期間沒(méi)有時(shí)間完成
69、。Winsock的套接字I/O模型可以幫助應(yīng)用程序判斷一個(gè)套接字何時(shí)可供讀寫.</p><p> 套接字的行為在Windows 9X 和Windows NT中與在 Windows 3.1中不同.在32位操作系統(tǒng)中,可以采用多線程編程,在不同的線程中使用套接字,這樣即使某個(gè)線程中的套接字被阻塞,也不會(huì)影響應(yīng)用程序的其他操作,同時(shí)也不會(huì)在阻塞線程上耗費(fèi)CPU時(shí)間。</p><p> (5)
70、 Winsock編程原理</p><p> 進(jìn)入20世紀(jì)90年代后,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,很多數(shù)據(jù)處理系統(tǒng)都采用開(kāi)放系統(tǒng)結(jié)構(gòu)的客戶機(jī)/服務(wù)器(Client/Server)網(wǎng)絡(luò)模型,即客戶機(jī)向服務(wù)器提交請(qǐng)求,服務(wù)器對(duì)請(qǐng)求做相應(yīng)的處理兵執(zhí)行被請(qǐng)求的任務(wù),然后將結(jié)構(gòu)返回給客戶機(jī)。這種方式隱含了在建立客戶機(jī)/服務(wù)器間通信是的非對(duì)稱性。</p><p> 客戶機(jī)/服務(wù)器模型工作時(shí)要求有一套
71、為客戶機(jī)和服務(wù)器所共識(shí)的慣例來(lái)保證服務(wù)能夠被提供(或被接受),這一套慣例包含了一套協(xié)議,它必須在通信的兩頭都被實(shí)現(xiàn)。根據(jù)不同的實(shí)際情況,協(xié)議可能是對(duì)稱的或非對(duì)稱的。在對(duì)稱的協(xié)議中每一方都有可能扮演主從角色;在非對(duì)稱協(xié)議中一方被不可改變地認(rèn)為是主機(jī),而另一方則是從機(jī)。一個(gè)對(duì)稱協(xié)議地例子是Internet中用于終端仿真地Telnet,而非對(duì)稱協(xié)議地例子是Internet中的http。無(wú)論具體的協(xié)議是對(duì)稱的或是非對(duì)稱的,當(dāng)服務(wù)被提供時(shí)必然存在
72、客戶進(jìn)程和服務(wù)進(jìn)程。</p><p> 一個(gè)服務(wù)程序通常在一個(gè)眾所周知地地址監(jiān)聽(tīng)客戶對(duì)服務(wù)地請(qǐng)求,也就是說(shuō),服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個(gè)客戶對(duì)這個(gè)服務(wù)地址提出連接請(qǐng)求。在這個(gè)時(shí)刻,服務(wù)程序被“驚醒”并且為客戶提供服務(wù)-對(duì)客戶地請(qǐng)求作出適當(dāng)?shù)姆磻?yīng)。這一請(qǐng)求/響應(yīng)的過(guò)程可以簡(jiǎn)單地用以下圖表表示,雖然基于連接地服務(wù)器應(yīng)用程序時(shí)的標(biāo)準(zhǔn),但有時(shí)服務(wù)也可以通過(guò)數(shù)據(jù)報(bào)套接字提供。</p><p>
73、; (6) C# Windows Socket類</p><p> 在.Net中,System.Net.Sockets 命名空間為需要嚴(yán)密控制網(wǎng)絡(luò)訪問(wèn)的開(kāi)發(fā)人員提供了 Windows Sockets (Winsock) 接口的托管實(shí)現(xiàn)。System.Net 命名空間中的所有其他網(wǎng)絡(luò)訪問(wèn)類都建立在該套接字Socket實(shí)現(xiàn)之上,如TCPClient、TCPListener 和 UDPClient 類封裝有關(guān)創(chuàng)建到
74、 Internet 的 TCP 和 UDP 連接的詳細(xì)信息;NetworkStream類則提供用于網(wǎng)絡(luò)訪問(wèn)的基礎(chǔ)數(shù)據(jù)流等,常見(jiàn)的許多Internet服務(wù)都可以見(jiàn)到Socket的蹤影,如Telnet、Http、Email、Echo等,這些服務(wù)盡管通訊協(xié)議Protocol的定義不同,但是其基礎(chǔ)的傳輸都是采用的Socket。 其實(shí),Socket可以象流Stream一樣被視為一個(gè)數(shù)據(jù)通道,這個(gè)通道架設(shè)在應(yīng)用程序端(客戶端)和遠(yuǎn)程服務(wù)器端
75、之間,而后,數(shù)據(jù)的讀?。ń邮眨┖蛯懭耄òl(fā)送)均針對(duì)這個(gè)通道來(lái)進(jìn)行。 可見(jiàn),在應(yīng)用程序端或者服務(wù)器端創(chuàng)建了Socket對(duì)象之后,就可以使用Send/SentTo方法將數(shù)據(jù)發(fā)送到連接的Socket,或者使用Rec</p><p> 其中,addressFamily 參數(shù)指定 Socket 使用的尋址方案,socketType 參數(shù)指定 Socket 的類型,protocolType 參數(shù)指定 Socket
76、使用的協(xié)議。 下面的示例語(yǔ)句創(chuàng)建一個(gè) Socket,它可用于在基于 TCP/IP 的網(wǎng)絡(luò)(如 Internet)上通訊。 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 若要使用 UDP 而不是 TCP,需要更改協(xié)議類型,如下面的示例所示: Socket s = n
77、ew Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 一旦創(chuàng)建 Socket,在客戶端,你將可以通過(guò)Connect方法連接到指定的服務(wù)器,并通過(guò)Send/SendTo方法向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù),而后可以通過(guò)Receive/ReceiveFrom從服務(wù)端接收數(shù)據(jù);而在服務(wù)器端,你需要</p><p> 3.2 .N
78、ET Framework 2.0介紹</p><p> 目前,.NET Framework的主流版本是2.0,3.0版本已經(jīng)推出,但還未被廣泛使用,當(dāng)前基于.NET平臺(tái)的軟件開(kāi)發(fā)還是主要集中在2.0版本上的。</p><p> .NET Framework是微軟為開(kāi)發(fā)應(yīng)用程序創(chuàng)建的一個(gè)富有革命性的新平臺(tái)。.NET Framework發(fā)布的第一個(gè)版本是運(yùn)行在Windows操作系統(tǒng)上的,以
79、后隨著技術(shù)的成熟與更新,其余的操作系統(tǒng)像Linux、FreeBSD,甚至個(gè)人數(shù)字助手(PDA)類設(shè)備,都有運(yùn)行在其上的.NET Framework版本。</p><p> .NET Framework主要由以下3部分組成,如圖 3-1:</p><p> 1. 公共語(yǔ)言運(yùn)行庫(kù)(CLR: Common Language Runtime)</p><p> 2.
80、基礎(chǔ)類庫(kù)(Base Class Library) </p><p> 3. VC++.Net 、VB.NET、C#等語(yǔ)言運(yùn)行庫(kù)</p><p> 圖3-1 .NET Framework組成</p><p> .NET Framework是框架,所有的運(yùn)行都是建立在這個(gè)框架基礎(chǔ)之上的(必須安裝)。 </p><p> VS.NET是開(kāi)發(fā)
81、工具(開(kāi)發(fā)平臺(tái)),也就是集成開(kāi)發(fā)環(huán)境,包括編輯器,編譯器等等,最重要的就是VS.NET包括.net framework(不需要單獨(dú)安裝)。 </p><p> 由于.net framework沒(méi)有編譯器,那么僅用它就無(wú)法把代碼編程程序,必須再一定的開(kāi)發(fā)平臺(tái)上才能使用(所以使用VS.NET)。</p><p> 第4章 系統(tǒng)具體實(shí)現(xiàn)</p><p><b&
82、gt; 4.1概要設(shè)計(jì)</b></p><p> 根據(jù)調(diào)查和研究,得到系統(tǒng)所要處理的數(shù)據(jù)流程,如圖4-1,4-2所示:</p><p> 圖4-1 客戶端數(shù)據(jù)流圖</p><p> 圖4-2 服務(wù)器數(shù)據(jù)流圖</p><p> 4.2定義服務(wù)器端和客戶端的通信結(jié)構(gòu)及含義</p><p><b&
83、gt; 4.2.1客戶端</b></p><p> private void login_btn_Click(object sender, EventArgs e) --- 登陸到服務(wù)器</p><p> private void svrip_tb_TextChanged(object sender,EventArgs e)設(shè)置要連接的服務(wù)器的地址端口</p>
84、<p> private void chatrcd_rtb_TextChanged(object sender, EventArgs e)-- 顯示好友發(fā)送的信息</p><p> private void send_btn_Click(object sender, EventArgs e) ---- 給好友發(fā)送信息</p><p> private void user
85、_tb_TextChanged(object sender, EventArgs e) ----- 申請(qǐng)新的用戶</p><p> private void chatrcd_rtb_TextChanged(object sender, EventArgs e) ---- 顯示服務(wù)器消息</p><p> private void msg_tb_TextChanged(object se
86、nder, EventArgs e) ----- 顯示消息輸入文本</p><p> private void nudge_pb_Click(object sender, EventArgs e)------發(fā)送窗口抖動(dòng)</p><p> private void broadcast_rb_CheckedChanged(object sender, EventArgs e)------
87、聊天模式的變更</p><p> private void hide_cb_CheckedChanged(object sender, EventArgs e)-------最小化到托盤</p><p><b> 4.2.2服務(wù)器端</b></p><p> 用戶及發(fā)送信息結(jié)構(gòu)體類型:</p><p> publ
88、ic void StartUp()-------服務(wù)器啟動(dòng),并且實(shí)時(shí)更新用戶在線信息</p><p> public void GetConfig()------配置服務(wù)器端口號(hào)等信息</p><p> private void ThreadFunc(object obj)-----系統(tǒng)對(duì)于發(fā)送消息、發(fā)送抖動(dòng)等的異常的處理</p><p> public vo
89、id Close()--------關(guān)閉服務(wù)器</p><p> 4.3客戶端具體實(shí)現(xiàn)</p><p> 1. 登陸功能:建立與服務(wù)器的連接并登陸,能顯示登陸錯(cuò)誤信息。</p><p> 2. 界面顯示:將在線好友顯示在好友列表中,并實(shí)現(xiàn)系統(tǒng)托盤,加入工具欄便于操作。</p><p> 3. 聊天功能:與好友聊天。</p>
90、<p> 4. 聊天紀(jì)錄:能保存聊天紀(jì)錄,并能察看聊天紀(jì)錄。</p><p> 5. 信息提示:閃動(dòng)托盤圖標(biāo)提示到來(lái)信息,并播放不同音樂(lè)來(lái)提示。</p><p> 6. 發(fā)送窗口抖動(dòng):發(fā)送端提示聊天的對(duì)方。</p><p> 客戶端的具體實(shí)現(xiàn),如圖4-3所示:</p><p> 圖4-3 客戶端業(yè)務(wù)邏輯</p&g
91、t;<p> 4.4服務(wù)器端具體實(shí)現(xiàn)</p><p> 1. 登陸信息:檢查登陸信息是否正確,并向客戶端返回登陸信息,如信息正確。就將在線用戶發(fā)給該用戶,并將該用戶的狀態(tài)發(fā)給各在線用戶。同時(shí)在服務(wù)器端顯示出來(lái)。</p><p> 2. 聊天信息:轉(zhuǎn)發(fā)給消息指定的用戶。</p><p> 3. 申請(qǐng)信息:自動(dòng)分配8位用戶號(hào)碼,并保存該用戶,同時(shí)將
92、信息返回給客戶端。</p><p> 4. 用戶下線:將此用戶下線消息發(fā)給各客戶端,并改寫用戶在服務(wù)器端的狀態(tài)。</p><p> 服務(wù)器端的具體實(shí)現(xiàn),如圖4-4所示:</p><p> 圖4-4 服務(wù)器業(yè)務(wù)邏輯</p><p><b> 第5章 系統(tǒng)測(cè)試</b></p><p> 經(jīng)
93、過(guò)對(duì)系統(tǒng)的軟、硬件的驗(yàn)收測(cè)試系統(tǒng)滿足用戶的要求。其中硬件測(cè)試主要包括硬件設(shè)備的清單、啟動(dòng)運(yùn)行正常與否等。重點(diǎn)是軟件部分的測(cè)試,首先對(duì)軟件的功能進(jìn)行測(cè)試,然后進(jìn)行了全系統(tǒng)的72小時(shí)連續(xù)運(yùn)行測(cè)試,系統(tǒng)穩(wěn)定性強(qiáng)。 </p><p> 表6-1系統(tǒng)功能測(cè)試細(xì)則表</p><p> 第6章 系統(tǒng)模塊設(shè)計(jì)及調(diào)試</p><p> 6.1 系統(tǒng)登錄界面</p>
94、;<p> 本系統(tǒng)的登陸界面,如圖6-1所示:</p><p><b> 圖6-1 登錄窗口</b></p><p><b> 部分代碼設(shè)計(jì)如下:</b></p><p> private void InitializeComponent()</p><p><b>
95、 {</b></p><p> this.groupBox1 = new System.Windows.Forms.GroupBox();</p><p> this.svrport_tb = new System.Windows.Forms.TextBox();</p><p> this.svrip_tb = new System.Windo
96、ws.Forms.TextBox();</p><p> ...............</p><p> this.groupBox1.SuspendLayout();</p><p> this.SuspendLayout();</p><p> ............</p><p><b>
97、 }</b></p><p> 6.2 系統(tǒng)維護(hù)界面</p><p> 本系統(tǒng)的維護(hù)界面,如圖6-2所示:</p><p> 圖6-2 服務(wù)器維護(hù)界面</p><p> 6.3 用戶聊天界面</p><p><b> 如圖 6-3所示:</b></p><
98、;p> 圖 6-3 用戶聊天主界面</p><p> 6.3.1聊天室模式</p><p> 公共聊天模式如圖 6-4所示:</p><p> 圖 6-4 公共聊天主界面</p><p> 6.3.2私人聊天模式</p><p> 私人聊天模式如圖 6-5所示:</p><p>
99、; 圖 6-5 私人聊天界面</p><p><b> 6.4系統(tǒng)開(kāi)發(fā)思路</b></p><p> 盡量采用公司現(xiàn)有的硬件環(huán)境,及先進(jìn)的管理系統(tǒng)開(kāi)發(fā)方案,從而達(dá)到充分利用公司現(xiàn)有資源,提高系統(tǒng)開(kāi)發(fā)水平和應(yīng)用效果的目的。</p><p> 系統(tǒng)應(yīng)符合員工日常的規(guī)定,滿足公司日常工作需要,并達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等要求。&
100、lt;/p><p> 系統(tǒng)采用C/S模型。服務(wù)器端和客戶端均使用Visual C#并使用Sockets模型開(kāi)發(fā)實(shí)現(xiàn)。</p><p> 系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開(kāi)發(fā)的技術(shù)維護(hù)人員補(bǔ)充和維護(hù)。</p><p><b> 6.5需求的總結(jié)</b></p><p> 首先,經(jīng)
101、過(guò)和用戶的討論將系統(tǒng)要實(shí)現(xiàn)的功能列出來(lái)。主要模塊有登陸模塊、連接模塊 、發(fā)送消息模塊和接收和處理模塊。</p><p> 其次,對(duì)軟件的性能指標(biāo)的需求。主要有人機(jī)界面交互反應(yīng)時(shí)和運(yùn)行時(shí)間限制在2秒之內(nèi),系統(tǒng)啟動(dòng)運(yùn)行不超過(guò)5秒,占用內(nèi)存不超過(guò)20M,外存不超過(guò)200M(不包括數(shù)據(jù)庫(kù)部分)。</p><p> 然后,提出軟件運(yùn)行的環(huán)境需求。該公司的運(yùn)行環(huán)境設(shè)置為:具有1GB以上cpu, 1
102、28MB的內(nèi)存,20GB硬盤規(guī)模的服務(wù)器和數(shù)臺(tái)普通可連網(wǎng)微機(jī);軟件采用windows 2000(服務(wù)器)和windows 98以上作為系統(tǒng)和網(wǎng)絡(luò)軟件。該軟件的使用對(duì)象是公司的管理人員,只要會(huì)用一般的微機(jī)操作即可。</p><p> 從數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)出發(fā),逐步細(xì)化所有的軟件功能,找出系統(tǒng)各元素之間的聯(lián)系,接口特性和設(shè)計(jì)上的限制,分析它們是否滿足功能要求,是否合理。</p><p> 在
103、該系統(tǒng)的分析和綜合中,經(jīng)過(guò)多次與用戶的交流形成了各功能模塊,如圖6-3、6-4所示:</p><p> 圖6-3 服務(wù)器功能模塊圖</p><p> 圖6-4 客戶端功能模塊圖</p><p><b> 結(jié) 論</b></p><p> 在指導(dǎo)教師的幫助下,及時(shí)完成了畢業(yè)論文和畢業(yè)設(shè)計(jì)。本次設(shè)計(jì)鍛煉了實(shí)踐能力,
104、增長(zhǎng)了我發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力,大大豐富了自己的專業(yè)知識(shí)和技能。</p><p> 由于各種原因,系統(tǒng)的功能還沒(méi)有得到進(jìn)一步的完善,系統(tǒng)存在一定的缺陷,如服務(wù)器端負(fù)擔(dān)過(guò)重、沒(méi)有實(shí)現(xiàn)可以插入圖形功能。以后會(huì)繼續(xù)努力,在今后的學(xué)習(xí)過(guò)程中,不斷地提高自己。</p><p><b> 致 謝</b></p><p> 畢業(yè)設(shè)計(jì)完成之際,我由衷
105、地感謝指導(dǎo)老師的大力幫助和支持,感謝我的同學(xué)與朋友,在我遇到各種各樣復(fù)雜問(wèn)題的時(shí)候,給與我鼓勵(lì)和幫助,使我的分析問(wèn)題和解決問(wèn)題能力有了很大的提高。</p><p> 設(shè)計(jì)期間,指導(dǎo)老師嚴(yán)肅的科學(xué)態(tài)度、嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神、精益求精的工作作風(fēng)深深地感染和激勵(lì)著我。從課題的選擇到項(xiàng)目的最終完成,都始終給予我細(xì)心的指導(dǎo)和不懈的支持。</p><p><b> 參考文獻(xiàn)</b>
106、</p><p> [1] 孟凡榮.?dāng)?shù)據(jù)庫(kù)原理與應(yīng)用.中國(guó)礦業(yè)大學(xué),2009,8:28-30</p><p> [2] 張虹.軟件工程與軟件開(kāi)發(fā)工具.北京:清華大學(xué)出版社,2009:55-75</p><p> [3] Bruce Eckel.Thinking in Java.北京:機(jī)械工業(yè)出版社,2009:42-64</p><p>
107、 [4] 羅軍舟等. TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù).北京:清華大學(xué)出版社,2008:132-210</p><p> [5] 孫一林,彭波.Java網(wǎng)絡(luò)編程實(shí)例.北京:清華大學(xué)出版社.2003:38-65</p><p> [6] 李樹青.Java通用范例開(kāi)發(fā)金典.北京:電子工業(yè)出版社.2009:64-78</p><p> [7] 王鵬.Java Swi
108、ng 圖形界面開(kāi)發(fā)與案例詳解.北京:清華大學(xué)出版社.2008:128-134</p><p> [8] 龐永慶,翟鵬.Java完全自學(xué)寶典.北京:清華大學(xué)出版社.2008:45-89</p><p> [9] 劉永華,于春花.Java網(wǎng)絡(luò)編程.北京:清華大學(xué)出版社.2008:18-29</p><p> [10]Boost Documentation. Edu
109、cating Your Organization .http://www.boost.org ,2011</p><p> [11] Boost.Asio Documentation.http://asio.sourceforge.net,2011 </p><p> [12] 孫桂蘭.電子商務(wù)網(wǎng)上書店系統(tǒng).北京:人民郵電出版社,2004,88-96</p><p&
110、gt; [14] 薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概述.北京:高等教育出版社,2004,45-67 </p><p> [15] B. Ford, M.I.T., P. Srisuresh, Etc. Peer-to-Peer (P2P) Communication Across Middleboxes.2007:27-35</p><p><b> 附 錄1</b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)聊天工具的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 網(wǎng)絡(luò)聊天工具的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于java的網(wǎng)絡(luò)安全聊天工具畢業(yè)設(shè)計(jì)
- 網(wǎng)絡(luò)視頻聊天工具的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文---局域網(wǎng)聊天工具的設(shè)計(jì)與實(shí)現(xiàn)
- 聊天工具仿真表情插件的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于OpenSSL開(kāi)發(fā)的聊天工具的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于netbios的聊天工具
- 局域網(wǎng)聊天工具設(shè)計(jì)畢業(yè)論文
- java基于tcp_ip協(xié)議的聊天工具的設(shè)計(jì)與開(kāi)發(fā)畢業(yè)設(shè)計(jì)
- 基于linux的socket網(wǎng)絡(luò)編程聊天工具課程設(shè)計(jì)
- 基于android的即時(shí)聊天工具
- 基于qt4的視頻聊天工具的設(shè)計(jì)與實(shí)現(xiàn)
- 基于QT4的視頻聊天工具的設(shè)計(jì)與實(shí)現(xiàn).doc
- 網(wǎng)絡(luò)聊天工具與傳統(tǒng)紙媒跨媒體整合初探.pdf
- java網(wǎng)頁(yè)版即時(shí)聊天工具開(kāi)題報(bào)告
- 開(kāi)題報(bào)告-基于android的即時(shí)聊天工具
- 基于.net的局域網(wǎng)聊天工具
- 課程設(shè)計(jì)報(bào)告---聊天工具服務(wù)器端設(shè)計(jì)
- 基于QT4的視頻聊天工具的設(shè)計(jì)與實(shí)現(xiàn)-任務(wù)書 .doc
評(píng)論
0/150
提交評(píng)論