freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文--基于vc的局域網(wǎng)聊天室-文庫吧

2024-11-13 17:57 本頁面


【正文】 采用 UDP 或者 TCP 協(xié)議體系來實(shí)現(xiàn) ,開發(fā)技術(shù)已經(jīng)比較成熟。 UDP 的實(shí)時(shí)性比較好,但是不一定提供可靠的數(shù)據(jù)傳輸, TCP 可以提供可靠的數(shù)據(jù)傳輸,本課題采用 TCP 完成局域網(wǎng)聊天室的 設(shè)計(jì) 。 論文的主要內(nèi)容 本課題主要研究的是局域網(wǎng)聊天 室 , 該 聊天 室 采用客戶端 /服務(wù)器( C/S)模式和 TCP連接 , 能實(shí)現(xiàn) 用戶在客戶 端與服務(wù)器間 傳遞文字信息 。它有兩個(gè)程序組成:服務(wù)器和客戶端,首先需要登錄服務(wù)器,需要指定服務(wù)器地址和端口號(hào),同時(shí)設(shè)置一個(gè)網(wǎng)名,與服務(wù)器建立連接,如果所取網(wǎng)名已經(jīng)被其他已經(jīng)登錄的客戶端使用,服務(wù)器會(huì)告訴客戶端 ,要求重新登錄。登錄后,客戶端各用戶可以發(fā)送文字信息,相互聊天。服務(wù)器模塊主要用來維護(hù)網(wǎng)絡(luò)上所有用戶的信息,如用戶名;聊天客戶端模塊主要包括用戶登錄、發(fā)送信息、接收信息等 。 整個(gè)工程采用結(jié)構(gòu)化的方式進(jìn)行編譯,逐步完善系統(tǒng)功能。 研究本課題需要熟練掌握 VC++語言,并且熟悉 VC 平臺(tái) 的操作 , 利用 socket 編 程技術(shù) 、 TCP 協(xié)議 進(jìn)行局域網(wǎng)聊天軟件的實(shí)際開發(fā)。選擇 TCP 協(xié)議而不選 UDP 是為了保證信息的可靠性,不同于 UDP 協(xié)議, TCP 要求在獲得可靠連接后才發(fā)送消息。 第一章主要討論課題研究的目的和意義,并對(duì)主要內(nèi)容作了簡(jiǎn)單的介紹。 第二章介紹了目前國內(nèi)外聊天系統(tǒng)的現(xiàn)狀,對(duì)國內(nèi) 和國外 MSN 聊天軟件做出了概括性的介紹并作了一些比較。 第三章主要介紹開發(fā)平臺(tái)和網(wǎng)絡(luò)編程,對(duì) Socket 的歷史和發(fā)展簡(jiǎn)單描述。 第四章討論了整個(gè)聊天系統(tǒng)的設(shè)計(jì),介紹了客戶端 /服務(wù)器模型,并討論了系統(tǒng)的實(shí)現(xiàn)原理和界面設(shè)計(jì)。 第五章主要是對(duì)各個(gè)功 能的實(shí)現(xiàn)做了詳細(xì)的分析 第六章給出總結(jié),對(duì)設(shè)計(jì)過程中出現(xiàn)的問題進(jìn)行分析,概括了整個(gè)聊天室系統(tǒng)的優(yōu)缺點(diǎn)。并對(duì)今后的繼續(xù)完善做了展望! 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 3 2 國內(nèi)外聊天系統(tǒng)的現(xiàn)狀 目前國內(nèi)外做聊天系統(tǒng)的公司很多,產(chǎn)品也琳瑯滿目,國內(nèi)有諸如騰訊 、新浪 UC、網(wǎng)易泡泡等,國外有著名的 MSN(新版改名為 Live Messenger)以及跨平臺(tái) Gaim 等。本人取最具代表性的 和 MSN 進(jìn)行了一些研究,作為開發(fā)聊天系統(tǒng)的準(zhǔn)備。 騰訊無疑是國內(nèi)即時(shí)通訊市場(chǎng)的霸主,自從 99 年進(jìn)入即時(shí)通訊領(lǐng)域并迅速占市場(chǎng)之后,其在國內(nèi)用戶數(shù)量始終高居榜首,即 使近幾年面對(duì)微軟 MSN 的強(qiáng)大攻勢(shì),騰訊 的時(shí)常占有率依然穩(wěn)步增長。騰訊的成功與其對(duì) 的不斷創(chuàng)新和完善是分不開的。 參考了許多網(wǎng)絡(luò)上的資料,以及自己通過觀察騰訊 運(yùn)行時(shí)的各種細(xì)節(jié)。可以確定騰訊 是以多服務(wù)器提供服務(wù)、服務(wù)器總控客戶端、客戶端之間 UDP 直連通信的。并且在兩個(gè)客戶端之間不能建立直連的情況下,才由服務(wù)器進(jìn)行中轉(zhuǎn)通信。 圖 1 騰訊 服務(wù)器 客戶端模型 與騰訊 不同,微軟的 MSN Messenger 只使用了 TCP 作為傳輸層通信協(xié)議,所有客戶端與服務(wù)器進(jìn)行連接,然后通過與服務(wù)器的 TCP 連 接進(jìn)行中轉(zhuǎn)通信。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 4 圖 2 MSN 服務(wù)器 客戶端模型 騰訊使用的模型中,服務(wù)器主要處理客戶端各種狀態(tài)的控制,可以極大減輕服務(wù)器的處理壓力,但其內(nèi)部協(xié)議和實(shí)現(xiàn)復(fù)雜度都較高。而 MSN Messenger 所有數(shù)據(jù)都要經(jīng)過服務(wù)器,服務(wù)器壓力可想而知(難怪平時(shí)很少見到使用 MSN 進(jìn)行語音視頻聊天的)。 上述軟件 都實(shí)現(xiàn)了廣域網(wǎng)上的即時(shí)通信 ,在使用方面 各有特色,在實(shí)現(xiàn)方面也各有所長 。 但是 隨著企業(yè)規(guī)模的擴(kuò)大,業(yè)務(wù)量的增加,企業(yè)內(nèi)部的信息越來越私密,企業(yè)只希望員工通過內(nèi)部局域網(wǎng)進(jìn)行溝通與交流,避免企業(yè)內(nèi)部機(jī)密通過 Inter 泄露到外部 ,所以局域網(wǎng)的聊天工具也占了很大的市場(chǎng) [4]。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 5 3 開發(fā)環(huán)境及編程語言介紹 Visual C++可視化集成開發(fā)環(huán)境 是微軟推出的一款可視化編程工具,適用面非常廣泛。 包含了一個(gè)文本編輯器、資源編輯器、工程編譯工具、一個(gè)增量連接器、源代碼瀏覽器、集成調(diào)試工具,以及一套聯(lián)機(jī)文檔。使用 ,可以完成創(chuàng)建、調(diào)試、修改應(yīng)用程序等的各種操作。 采用標(biāo)準(zhǔn)的多窗口 Windows 用戶界面,并增加了一些新特性,使得開發(fā)環(huán)境更易于使用,用戶很容易學(xué)會(huì)它的使用方法。 由于 是一個(gè)可視化的開發(fā)工具,在介紹 的各個(gè)組成部分之前,首先了解一下可視化編程的概念??梢暬夹g(shù)是當(dāng)前發(fā)展迅速并引人注目的技術(shù)之一,它的特點(diǎn)是把原來抽象的數(shù)字、表格、功能邏輯等用直觀的圖形、圖象的形式表現(xiàn)出來 [5]??梢暬幊淌撬闹匾獞?yīng)用之一。所謂可視化編程,就是指:在軟件開發(fā)過程中,用直觀的具有一定含義的圖標(biāo)按鈕、圖形化的對(duì)象取代原來手工的抽象的編輯、運(yùn)行、瀏覽操作,軟件開發(fā)過程表現(xiàn)為鼠標(biāo)點(diǎn)擊按鈕和拖放圖形化的對(duì)象以及指定對(duì)象的屬性、行為的過程。這種可視化的編程方法易學(xué)易用,而且大大提高了工作效 率 [6]。 網(wǎng)絡(luò)編程 80 年代初,美國政府的高級(jí)研究工程機(jī)構(gòu)( ARPA)給加利福尼亞大 Berkeley 分校提供了資金,讓他們?cè)?UNIX 操作系統(tǒng)下實(shí)現(xiàn) TCP/IP 協(xié) 議。在這個(gè)項(xiàng)目中 研究人員為 TCP/IP網(wǎng)絡(luò)通信開發(fā)了一個(gè) API(應(yīng)用程序接口)。這個(gè) API 稱為 Socket 接口(套接字)。今天,SOCKET 接口是 TCP/IP 網(wǎng)絡(luò)最為通用的 API,也是 INTERNET 上進(jìn)行應(yīng)用開發(fā)最為通用的 API。 套接字是從英文單詞 socket 翻譯過來的 , ( Socket 在英文中是插座的意思 ,在這里設(shè)計(jì)者實(shí)際上是暗指 電話插座。因?yàn)樵? Socket 環(huán)境下編程很像是打電話的模擬 ,Inter 的 IP 地址就是電話號(hào)碼 ,要打電話 ,首先要有個(gè)電話插座 ,在程序中就是向系統(tǒng)申請(qǐng)一個(gè) Socket,以后兩臺(tái)機(jī)器上的程序 “ 交談 ” 都是通過這個(gè) Socket 來進(jìn)行的。對(duì)程序員來說 ,也可以把 Socket 看成一個(gè)文件指針 ,只要向指針?biāo)傅奈募x寫數(shù)據(jù) ,就可以實(shí)現(xiàn)雙向通訊。它是網(wǎng)絡(luò)通信的基本構(gòu)件。套接字是可以被命名和尋址的通信端點(diǎn) ,是網(wǎng)絡(luò)互連終點(diǎn)。換句話說 ,網(wǎng)絡(luò)互連是兩個(gè)計(jì)算機(jī)或處理器通過網(wǎng)絡(luò)相互傳輸數(shù)據(jù)。網(wǎng)絡(luò)專業(yè)人員將每個(gè)網(wǎng)絡(luò)會(huì)話的末端稱做 終點(diǎn)。若通過套接字接口進(jìn)行網(wǎng)絡(luò)互連 ,則程序在每個(gè)網(wǎng)絡(luò)互連的末端都需要一個(gè)套接字 ,套接字接口相當(dāng)于文件系統(tǒng) ,可以使用 API 通過網(wǎng)絡(luò)軟件申請(qǐng)一個(gè)可以指定特定套接字的句柄來定義套接字的特性。當(dāng)然 ,套接字句柄和文件句柄是不同的 ,武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 6 文件句柄指向一個(gè)特定的文件和設(shè)備 ,而套接字句柄并不代表一個(gè)特定的終點(diǎn)或目標(biāo)地址。基于套接字的程序先創(chuàng)建一個(gè)套接字 ,然后再將套接字和目標(biāo)終點(diǎn)連接起來。底層的套接字函數(shù)是 WinIAPI 的一部分 ,但使用 MFC 的 CSocket 類 ,它封裝了這些套接字函數(shù)。 CSocket 類實(shí)際上來源于 CAsyncSocket 類 ,但該類編程比較復(fù)雜 ,需要編寫底層函數(shù)來進(jìn)行通信操作 ,而 CSocket 為底層函數(shù)提供了一個(gè)更抽象的封裝 ,替編程者執(zhí)行對(duì)底層函數(shù)的操作 ,簡(jiǎn)化了 Socket 編程。 CSocket 類提供了一個(gè)高級(jí)的 Socket 支持 ,運(yùn)用了 MFC 的序列化類來提供和傳輸 Socket 對(duì)象。利用 Socket 進(jìn)行通訊 ,有兩種主要的方式。一種叫流方式 ( StreamSocket)也稱面向連接方式。在這種方式下 ,兩個(gè)通訊的應(yīng)用程序之間先要建立一種虛擬的連接。其過程好像客戶機(jī)在給服務(wù)器打電話 ,只有服務(wù)器拿起了聽 筒 ,才有可能開始傳輸數(shù)據(jù) ,這種方式對(duì)應(yīng)的 TCP 協(xié)議。第二種叫作數(shù)據(jù)報(bào)文方式 (DatagramSocket) ,又稱無連接方式 ,這時(shí)兩臺(tái)計(jì)算機(jī)像是把數(shù)據(jù)放在一封封信里通過網(wǎng)絡(luò)寄給對(duì)方 ,信在傳送的過程中有可能會(huì)殘缺不全 ,而且 ,后發(fā)出的信也有可能會(huì)先收到 ,它對(duì)應(yīng)的是 UDP 協(xié)議 [7]。流方式的特點(diǎn)是 ,通訊可靠 ,對(duì)數(shù)據(jù)有校驗(yàn)和重發(fā)的機(jī)制 ,通常用來作數(shù)據(jù)文件的傳輸如 ftp、 tel 等 。數(shù)據(jù)報(bào)文方式由于取消了重發(fā)校驗(yàn)機(jī)制 ,能夠達(dá)到較高的通訊速率 ,可以用作一些對(duì)數(shù)據(jù)可靠性要求不高的通訊 ,如實(shí)時(shí)的語音、像轉(zhuǎn)送、 播消息等。由于兩臺(tái)計(jì)算機(jī)之間采用的是客戶機(jī) /服務(wù)器模式 ,為保證數(shù)據(jù)的可靠性 ,可以 采用了基于流方式的套接字編程 [8]。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 7 4 局域網(wǎng)聊天室的設(shè)計(jì) 客戶機(jī) /服務(wù)器模式 通信的兩個(gè)應(yīng)用程序間相互作用的主要模式是客戶機(jī) /服務(wù)器模式 ,即客戶向服務(wù)器發(fā)出服務(wù)請(qǐng)求 ,服務(wù)器接收到請(qǐng)求后 ,提供相應(yīng)的服務(wù)??蛻魴C(jī) /服務(wù)器模式的建立基于以下兩點(diǎn) :首先。建立網(wǎng)絡(luò)的起因是網(wǎng)絡(luò)中軟硬件資源、運(yùn)算能力和信息不均等 ,需要共享 ,從而造就擁有眾多資源的主機(jī)提供服務(wù) ,資源較少的客戶請(qǐng)求服務(wù)這一非對(duì)等作用。其次 ,網(wǎng)間進(jìn)程通信完全是異步的 ,相 互通信的進(jìn)程間既不存在父子關(guān)系 ,又不共享內(nèi)存緩沖區(qū) ,因此需要一種機(jī)制為希望通信的進(jìn)程間建立聯(lián)系 ,為二者的數(shù)據(jù)交換提供同步 [9]。 客戶機(jī) /服務(wù)器模式在操作過程中采取的是主動(dòng)請(qǐng)求方式 :首先服務(wù)器方要先啟動(dòng) ,并根據(jù)請(qǐng)求提供相應(yīng)服務(wù) : 1) 打開通信通道并告知本地主機(jī) ,它愿意在某一公認(rèn)地址上接收客戶請(qǐng)求 。 2) 等待客戶請(qǐng)求到達(dá)該端口 。 3) 接收到服務(wù)請(qǐng)求 ,處理該請(qǐng)求并發(fā)送應(yīng)答信號(hào)。服務(wù)完成后 ,關(guān)閉與客戶的通信鏈路 ,并終止 。 4) 返回第二步 ,等待客戶請(qǐng)求 。 5) 關(guān)閉服務(wù)器。 客戶方 : 1) 打開一通信通道 ,并連接到服務(wù)器所在主機(jī)的特定端口 。 2) 向服務(wù)器發(fā)服務(wù)請(qǐng)求 ,等待并接收應(yīng)答 。 3) 請(qǐng)求結(jié)束后關(guān)閉通信通道并終止。 由此可知 : 1) 客戶與服務(wù)器進(jìn)程的作用是非對(duì)稱的 ,因此編碼不同 。 2) 服務(wù)進(jìn)程一般是先于客戶請(qǐng)求而啟動(dòng)的。只要系統(tǒng)運(yùn)行 ,該服務(wù)進(jìn)程一直存在 ,直到正常終止或被強(qiáng)迫終止。 系統(tǒng)實(shí)現(xiàn)原理 聊天系統(tǒng)的設(shè)計(jì)跟普通網(wǎng)站設(shè)計(jì)有著許多不同的地方,普通網(wǎng)站設(shè)計(jì)所考慮的因素,例如,普通網(wǎng)站需要對(duì)布局進(jìn)入大量美化以及動(dòng)畫設(shè)計(jì)等等,而聊天室只要提供滿足訪客雙方直接實(shí)時(shí)聊天即可。因此,在設(shè)計(jì)聊天系統(tǒng)的過 程中,必須要考慮好以下幾個(gè)設(shè)計(jì)要點(diǎn): 在 Inter 上的聊天程序一般都是以服務(wù)器提供服務(wù)端連接響應(yīng),使用者通過客戶端武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 8 程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個(gè)面向連接的通信過程。因此,程序要在 TCP/IP 環(huán)境下,實(shí)現(xiàn)服務(wù)器端和客戶端兩部分程序。 為了利用重載套接字的消息相應(yīng)函數(shù) 必須從 CAsyncSocket 派生出自己的套接字類 ,有時(shí)為了分開監(jiān)聽套接字和客戶端套接字 ,還應(yīng)該分別派生監(jiān)聽套接字類和客戶端套接字類。利用這兩類函數(shù)就可以開始寫網(wǎng)絡(luò)通信程序。整個(gè)過程可以分成三個(gè)階段 連接建 立 、數(shù)據(jù)傳和拆除連接 [10]。 圖 3 系統(tǒng)實(shí)現(xiàn)原理圖 在套接字創(chuàng)建以及通信的過程中,將用到很多函數(shù)處理相關(guān)事件,具體函數(shù)見下: ( 1) AfxSocketInit(): 此函數(shù)在初始化應(yīng)用程序函數(shù)中調(diào)用,用于確定 Winsock 版本并做一些套接字的初始化工作。 ( 2) Create(): 創(chuàng)建套接字,在創(chuàng)建監(jiān)聽套接字時(shí)必須加上端口號(hào)。 ( 3) Listen(): 監(jiān)聽套接字專用,用于向監(jiān)聽套接字發(fā)送對(duì)端口監(jiān)聽的命令。 ( 4) Connect(): 客 戶端套接字專用,用于向服務(wù)器發(fā)送連接請(qǐng)求。 ( 5) Accept(): 監(jiān)聽套接字專用,用于接受客戶端通過網(wǎng)絡(luò)發(fā)送的連接請(qǐng)求,建立連接。 ( 6) Send(): 用于向套接字發(fā)送數(shù)據(jù)。 ( 7) Receive(): 用于套接字接受數(shù)據(jù)。 客戶端 服務(wù)器 建立服務(wù)端 監(jiān)聽 等待并接受連接 創(chuàng)建連接套接字 發(fā)送消息 Send 接受消息 Receive 關(guān)閉套接字 Close 向服務(wù)端發(fā)送連接請(qǐng)求 Connect 發(fā)送消息 Send 接受消息 Receive 關(guān)閉套接字 Close 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 9 ( 8) Close(): 關(guān)閉套接字,可由析構(gòu)函數(shù)調(diào)用。 在整個(gè)通信過程中,當(dāng)某一事件觸發(fā)時(shí),應(yīng)用框架將收到某些消息,從而自動(dòng)調(diào)用響應(yīng)函數(shù)??梢栽谶@些函數(shù)中寫入自己的代碼,從而更好的完成通信過程。具體函數(shù)見下: ( 1) OnAccept(): 監(jiān)聽套接字在端口聽到連接請(qǐng)求時(shí) 應(yīng)用程序框架自動(dòng)調(diào)用,以告知可以接受請(qǐng)求或拒絕連接??稍谠摵瘮?shù)中調(diào)用 Accept()來連接請(qǐng)求,建立連接。 ( 2) OnConnect(): 當(dāng)客戶端套接字連接請(qǐng)求完成后 ,應(yīng)用程序框架調(diào)用該函數(shù) ,告之是否成功。 ( 3) OnSend(): 框架調(diào)用此函數(shù)來通知該套接字現(xiàn)在可以調(diào)用 Send 函數(shù)來傳送數(shù)據(jù)。 ( 4) OnReceive(): 框架調(diào)用此函數(shù)來告訴套接字現(xiàn)在可以調(diào)用 Receive 函數(shù)從數(shù)據(jù)緩沖區(qū)取出數(shù)據(jù)。 ( 5) OnCloes(): 框架調(diào)用該函數(shù)告知套接字與其連接的對(duì)方套接字已經(jīng)斷開連接。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1