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

正文內(nèi)容

基于局域網(wǎng)的即時(shí)通訊聊天室系統(tǒng)設(shè)計(jì)_畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2025-08-14 14:19 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 應(yīng)用進(jìn)程 WSAAsyncSelect 線程繼續(xù)運(yùn)行 Recv() 復(fù)制數(shù)據(jù)期間 阻塞 處理數(shù)據(jù) 內(nèi)核 等待數(shù) 據(jù) 數(shù)據(jù)準(zhǔn)備好 復(fù)制數(shù)據(jù) 將數(shù)據(jù)復(fù)制到 擁護(hù)空間 完成復(fù)制 系統(tǒng)調(diào)用 返回 消息 系統(tǒng)調(diào)用 返回成功指示 7 源 IP 地址 發(fā)送包的 IP 地址。 目的 IP 地址 接收包的 IP 地址。 源端口 源系統(tǒng)上的連接的端口。 目的端口 目的系統(tǒng)上的連接的端口。 端口是一個(gè)軟件結(jié)構(gòu),被客戶程序或服務(wù)進(jìn)程用來(lái)發(fā)送和接收信息。一個(gè)端口對(duì)應(yīng)一個(gè) 16 比特的數(shù)。服務(wù)進(jìn)程通常使用一個(gè)固定的端口,例如, SMTP 使用 25。這些端口號(hào)是 “ 廣為人知 ” 的,因?yàn)樵诮⑴c特定的主機(jī)或服務(wù)的連接時(shí),需要這些地址和目的地址進(jìn)行通訊 ,圖如 所示。 面 向連接的( TCP) 連接過(guò)程 8 Client/Server 結(jié)構(gòu) (客戶機(jī) /服務(wù)器模式) Client/Server 結(jié)構(gòu) ( C/S 結(jié)構(gòu) )是大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。通過(guò)它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到 Client 端和 Server 端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。 目前大多數(shù)應(yīng)用 軟件 系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu) 。 C/S 結(jié)構(gòu)軟件分為客戶機(jī)和服務(wù)器兩層,客戶機(jī)不是毫無(wú)運(yùn)算能力的輸入、輸出設(shè)備,而是具有了一定的數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)能力,通過(guò)把應(yīng)用軟件的計(jì)算和數(shù)據(jù)合理地分配在客戶機(jī)和服務(wù)器兩端,可以有效地降低網(wǎng)絡(luò)通信量和服務(wù)器運(yùn)算量。由于服務(wù)器連接個(gè)數(shù)和數(shù)據(jù)通信量的限制,這種結(jié)構(gòu)的軟件適于在用戶數(shù)目不多的局域網(wǎng)內(nèi)使用。 C/S 結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對(duì)應(yīng)的 優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。缺點(diǎn)主要有以下幾個(gè): 只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公和分布式辦公越來(lái)越普及,這需要我們的系統(tǒng)具有擴(kuò)展性。這種方式遠(yuǎn)程訪問(wèn)需要專門的技術(shù),同時(shí)要對(duì)系統(tǒng)進(jìn)行專門的設(shè)計(jì)來(lái)處理分布式的數(shù)據(jù)。 9 3 系統(tǒng) 分析與設(shè)計(jì) 系統(tǒng)分析 系統(tǒng)需求 聊天交流是目前互聯(lián)網(wǎng)提供的主要內(nèi)容。聊天系統(tǒng)有多種實(shí)現(xiàn)方式, 類似 ICQ屬于一種點(diǎn)對(duì)點(diǎn)的聊天系統(tǒng);還有一種是基于 Socket 的集中式聊天系統(tǒng),這種聊天系統(tǒng)需要登陸 統(tǒng)一 的聊天服務(wù)器 。在基于 Socket 的聊天系統(tǒng)中, 主要有兩種角色:服務(wù)器和客戶端,不同的客戶端登陸集中式的服務(wù)器,通過(guò)服務(wù)器將一個(gè)客戶端發(fā)出的信息推送到其他所有客戶端。 基于 Socket 的聊天系統(tǒng)最早實(shí)現(xiàn)是使用網(wǎng)頁(yè)刷新方式,通過(guò)客戶端不斷地自動(dòng)刷新,服務(wù)器端整個(gè)頁(yè)面內(nèi)容下載到客戶端顯示,這種方式的聊天速度慢,而且有刷屏現(xiàn)象,很快被更新的聊天技術(shù)所替代。 聊天系統(tǒng)在客戶端和服務(wù)器之間主要傳送的是文字信息,服務(wù)器端只需要把最近的文字信息推送到客戶端,這樣減少了網(wǎng)絡(luò)傳輸內(nèi)容,節(jié) 省了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間,無(wú)疑提高了聊天速度。這種“推”技術(shù)是目前基于 Socket 聊天系統(tǒng)的主要實(shí)現(xiàn)技術(shù)。 在 基于 Socket 的聊天系統(tǒng) , 客戶端和服務(wù)器必須保持隨時(shí)隨地的連接。這有別于普通 Web 瀏覽的連接方式。在使用瀏覽器訪問(wèn)服務(wù)器時(shí),先由客戶端發(fā)出 HTTP 協(xié)議,然后服務(wù)器響應(yīng)處理這個(gè)客戶端的響應(yīng),再返回處理結(jié)果;請(qǐng)求( Request)和響應(yīng)( Response)是一種一對(duì)一的前后因果關(guān)系 。 而在基于 Socket 的聊天系統(tǒng)中,客戶端發(fā)出聊天信息的同時(shí),客戶端也在接受服務(wù)器發(fā)送過(guò)來(lái)的其他人的聊天信息,因此,請(qǐng)求和響應(yīng)不 存在那種前后對(duì)應(yīng)關(guān)系,是兩種分別獨(dú)立進(jìn)行的進(jìn)程。因?yàn)榉?wù)器任何時(shí)候都可能發(fā)送信息到客戶端,因此,客戶端和服務(wù)器一旦建立連接,必須能讓服務(wù)器在以后發(fā)送中尋找定位到這個(gè)連接 。 局域網(wǎng)聊天系統(tǒng)使該系統(tǒng)的用戶能夠通過(guò) 客戶端登入到該系統(tǒng),然后直接與系統(tǒng)交互。 首先,需啟動(dòng)服務(wù)器,進(jìn)行服務(wù)器的配置,進(jìn)行正確的服務(wù)器配置和數(shù)據(jù)庫(kù)連接并測(cè)試成功后,開啟服務(wù)器。接下來(lái), 在客戶端,該系統(tǒng) 的用戶能夠通過(guò)登陸界面進(jìn)入,然后直接 與系統(tǒng)交互,進(jìn)行文字傳送。 本 系統(tǒng)支持的活動(dòng)列表如下: ( 1) 配置服務(wù)器, 設(shè)置 IP 及端 ; ( 2) 開啟服務(wù)器; ( 3) 對(duì)離線用戶進(jìn) 行刪除管理; ( 4) 用戶登陸系統(tǒng); ( 5) 用戶與系統(tǒng)交互,進(jìn)行文字傳送 ; 10 ( 6) 用戶好友 登陸后 ,自動(dòng) 刷新列表; ( 7) 傳送文字,當(dāng)好友不在線時(shí),發(fā)送離線消息 ; ( 8) 上線接收離線消息; 需求分析 該聊天 程序分為服務(wù)器端和課戶端兩個(gè)部分。 客戶端實(shí)現(xiàn)功能: ( 1) 向在線成員發(fā)送消息并接收消息。 ( 2) 更新成員狀態(tài)。當(dāng)其他成員上線或下線時(shí),客戶端及時(shí)更新成員狀態(tài)。 ( 3) 更新成員列表,當(dāng)其他成員加入或者偶成員被刪除時(shí),客戶端及時(shí)更新成員列表。 ( 4) 當(dāng)對(duì)方不在線時(shí),可以向該成員發(fā)送離線消息。 ( 5) 當(dāng)用戶上線時(shí),接受其他用戶的離線消息。 ( 6) 保存聊天記錄。 服務(wù) 器端實(shí)現(xiàn)功能: ( 1) 維護(hù)聊天室成員列表:包括接受新成員,刪除已有成員。 ( 2) 通知客戶端更新成員狀態(tài)。 ( 3) 通知客戶端更新成員列表。 ( 4) 為離線用戶保存離線消息。 ( 5) 驗(yàn)證密碼 。 ( 6) 禁止已登陸用戶再次登陸。 ( 7) 保存用戶信息。 ( 8) 為用戶保存離線消息。 關(guān)系圖如圖 所示: 11 圖 關(guān)系功能圖 系統(tǒng)設(shè)計(jì) 設(shè)計(jì) 原則 考慮到系統(tǒng)的可重用性和伸縮性,需要將本系統(tǒng)的網(wǎng)絡(luò)通信底層和應(yīng)用系統(tǒng)分離開。這樣,基于可重用的網(wǎng)絡(luò)通信層,可 以實(shí)現(xiàn)其他各種實(shí)時(shí)性較高的應(yīng)用系統(tǒng) 。 本系統(tǒng)在 架構(gòu)設(shè)計(jì)上將分 4 個(gè)層次,如圖 所示。 圖 架構(gòu)層次 本系統(tǒng)最底層是 Socket 通信層,將負(fù)責(zé)客戶端和服務(wù)器之間快速的數(shù)據(jù)交換,CAsyncSocket CSocket 聊天、游戲等應(yīng)用系統(tǒng) Window Sockets API Client Server Client Client Client 更新成員列表 成員列表 請(qǐng)求 應(yīng)答 發(fā)送消息 12 它通過(guò)接口層和最上面應(yīng)用層保持實(shí)時(shí)數(shù)據(jù)聯(lián)系。用戶從客戶端進(jìn)入到本系統(tǒng)前,將實(shí)現(xiàn)統(tǒng)一的用戶登錄驗(yàn)證機(jī)制。 Socket 底層設(shè)計(jì)分兩大部分:協(xié)議設(shè)計(jì)和連接處理設(shè)計(jì):協(xié)議設(shè)計(jì)和連接處理設(shè)計(jì); CSocket 層 的目的 是提供底層和應(yīng)用蹭一個(gè)中介媒體的作用,但是不能設(shè)計(jì)得太復(fù)雜,以免 延誤數(shù)據(jù)傳送時(shí)間。 工作流程 只有充分地了解了聊天程序的工作流程,才能對(duì)整個(gè)系統(tǒng)的理解更加深刻,聊天程序的工作流程如圖 所示 。 圖 聊天程序的工作流程 功能設(shè)計(jì) 局域網(wǎng)聊天系 統(tǒng)以局域網(wǎng)內(nèi)的用戶為應(yīng)用對(duì)象,經(jīng)過(guò)各方面需求分析,該系統(tǒng)主加載套接字庫(kù) 初始化套接字 綁定本地機(jī)到套接字 向指定 IP 地址發(fā)送數(shù)據(jù) 關(guān)閉套接字庫(kù)結(jié)束聊天 創(chuàng)建線程用于接受數(shù)據(jù) 13 要 由服務(wù)器端和客戶端兩部分構(gòu)成,各功能模塊如圖 36 所示。 圖 36 局域網(wǎng)聊天系統(tǒng)功能 模塊 圖 共享數(shù)據(jù)類設(shè)計(jì) A.用戶設(shè)計(jì): 1.用戶狀態(tài)設(shè)計(jì) 客戶端與服務(wù)器端都擁有成員列表。該程序?qū)⒊蓡T列表設(shè)計(jì)為三種狀態(tài) 登 陸 狀 態(tài) : 當(dāng) 用 戶 登 陸 服 務(wù) 器 事 , 設(shè) 置 用 戶 狀 態(tài) 為 登 陸 狀 態(tài) , 服務(wù)器根據(jù)該用戶列表狀態(tài)發(fā)送成員列表。 在線狀態(tài):用戶在線,當(dāng)兩個(gè)用戶都在線時(shí),可以相互發(fā)送和接受成員列表。 離線狀態(tài): 當(dāng)用戶離線時(shí),不能發(fā)送和接受消息。 在線用戶之間可以直接發(fā)送消息;對(duì)離線離線用戶需要服務(wù)器轉(zhuǎn)發(fā)。 轉(zhuǎn)發(fā)關(guān)系如圖 所示。 C l i n e t消 息C l i e n t 在線用戶發(fā)送消息 局域網(wǎng)聊天系統(tǒng) 服務(wù)器 客戶端 開啟服務(wù)器 停止服務(wù)器 配置服務(wù)器 關(guān)閉服務(wù)器 發(fā) 送 離 線信息 登陸 文字傳送 接收 離 線信息 用 戶 管 理 14 C l i n e t S e r v e r C l i e n t消 息 消 息 在線用戶給離線用戶發(fā)送消息 圖 轉(zhuǎn)發(fā)關(guān)系圖 B. 用戶類設(shè)計(jì) 在程序中聲明 CUserInfo 信息類。在該類中聲明 USERSTATUE 枚舉類型,描述用戶狀態(tài)。 ? ONLINE:在線狀態(tài) ? OFFLINE:離線狀態(tài) ? LOGIN:登陸狀態(tài) ? UNKNOWN:未知狀態(tài),初始化狀態(tài)。 成員函數(shù)如 表 成員函數(shù) , 類成員變量如表 32 所示 。 表 成員函數(shù) 函 數(shù) 名 稱 返 回 值 功 能 CUserInfo() 無(wú) 構(gòu)造函數(shù) CUserInfo(constCUserInfoamp。userInfo) 無(wú) 復(fù)制構(gòu)造數(shù) ~CUserInfo () 無(wú) 析構(gòu)函數(shù) Init() Void 初始成員變量 Serialize(CArchiveamp。ar) void 序列化 Operator=(const CUserInfoamp。userInfo) CUserInfoamp。 賦值函數(shù) 表 成員變量 名 稱 類 型 說(shuō) 明 m_strName CString 名稱 m_strPassword Cstring 密碼 m_eStatus USERSTATUE 狀態(tài) m_lIP DWORD I P 地址 m_time CTime 時(shí)間 15 B.?dāng)?shù)據(jù)包類設(shè)計(jì) 在 程序中聲明 CChatPacket 類描述服務(wù)器和客戶端接收和發(fā)送的數(shù)據(jù)包。在該類中聲明 PACKETTYPE 枚舉類型。 ? MESSAGE:客戶端發(fā)送的消息 ? USERLIST:用戶列表 ? SERVERMSG:服務(wù)器發(fā)送的消息 ? UNKNOWN:未知類型 表 33: CChatPakcet 類成員函數(shù) 函 數(shù) 名 稱 返 回 值 功 能 CChatPacket() 無(wú) 構(gòu)造函數(shù) ~CChatPacket() 無(wú) 析夠函數(shù) Init() Viod 初始化成員變量 Serialize(CArchive amp。ar) Void 序列化 表 34: CChatPacket 類成員變量 名 稱 類 型 說(shuō) 明 m_type PACKETTYPE 包類型 m_UserInfo CUserInfo 用戶信息 m_strMsg CString 消息 m _pUserList CObList* 用戶鏈表 m_OfflineUserInfo CUserInfo 離線用戶信息 m_time CTime 日期和時(shí)間 16 4 系統(tǒng)實(shí)現(xiàn) 服務(wù)器端 設(shè)計(jì) 實(shí)現(xiàn) 服務(wù)器端 靜態(tài)類圖 C A r c h i v e C S o c k e t F i l e m _ h I c o n : H I C O NC S o c k e t F i l eC L i s t e n S o c k e t C C l i e n t S o c k e tC S e r v e r A d d r e s s D l gC S e r v e r A p p 聯(lián) 合 P A C K E T T Y P EC C h a t P a c k e tC U s e r I n f
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1