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

正文內(nèi)容

基于vcsocket的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì)(已改無錯(cuò)字)

2022-12-23 03:24:04 本頁(yè)面
  

【正文】 機(jī)和服務(wù)器結(jié)構(gòu)。通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到 Client 端和 Server 端來實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用 軟件 系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu) 。 C/S 結(jié)構(gòu)軟件分為客戶機(jī)和服務(wù)器兩層,客戶機(jī)不是毫無運(yùn)算能力的輸入、輸出設(shè)備,而是具有了一定的數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)能力,通過把應(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)速度快。 在 TCP/IP 網(wǎng)絡(luò)中兩個(gè)進(jìn)程間的相互作用的主要模式是客戶機(jī) /服務(wù)器模式,它也是構(gòu)造分布式應(yīng)用程序最常用的模式。該模式的建立基于以下兩點(diǎn) :非對(duì)稱作用和通信完全是異步的。服務(wù)器程序通常在一個(gè)地址上偵聽對(duì)服務(wù)器的請(qǐng)求,基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 10 也就是說直到有客戶向服務(wù)端發(fā)出連接請(qǐng)求后,服務(wù)器進(jìn)程才會(huì)從休眠狀態(tài)被喚醒,并為客戶的請(qǐng)求提供服務(wù)。服務(wù)可通過流式套接字或數(shù)據(jù)報(bào)套接字來提供。 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 11 3 系統(tǒng) 需求分析與 總體 設(shè)計(jì) 上章介紹了本系統(tǒng)所需要的軟硬件配置以及關(guān)鍵技術(shù)。本章將開始著重分析系統(tǒng)的需求, 從系統(tǒng)功能和系統(tǒng)性能兩個(gè)方面 明確系統(tǒng)所要實(shí)現(xiàn)的 目標(biāo) , 為系統(tǒng)的開發(fā)做好鋪墊。 系統(tǒng)總體需求分析 為了開發(fā)出符合要求的網(wǎng)絡(luò)聊天程序,首先必須知道使用者的需求。對(duì)需求的深入理解是開發(fā)工作獲得成功的前提條件,它對(duì)目標(biāo)項(xiàng)目提出完整、準(zhǔn)確、清晰、具體的要求 [10]。 首先,服務(wù)器需要同時(shí)連接很多個(gè)用戶,并能提供給這些連接用戶所需要的任務(wù)處理請(qǐng)求,這就要求服務(wù)器能同時(shí)處理多個(gè) Socket 連接。服務(wù)器模型一般分為循環(huán)服務(wù)器和并發(fā)服務(wù)器,循環(huán)服務(wù)器一次只能處理一個(gè)連接,也就是說同一時(shí)間只能由一個(gè)用戶連接到服務(wù)器進(jìn)行消息處理,這種情況是不被允許的。因此我們將采用多線程方式的并發(fā)服務(wù)器來設(shè)計(jì)服務(wù)器端,這樣將能從很大程度上提高服務(wù)器的運(yùn)行效率。 其次,客戶端只需要連接到服務(wù)器便可以進(jìn)行任務(wù)的處理工作,因此客戶端的主要性能要求為圖形界面運(yùn)行的穩(wěn)定性和對(duì)出錯(cuò)信息的及時(shí)反映。當(dāng)一個(gè)窗體出現(xiàn)問題時(shí)能夠及時(shí)的處理,讓主程序不受影響。 再者,所有的應(yīng)用程序在運(yùn)行過程中都會(huì)出現(xiàn)出錯(cuò) 的情況,這種錯(cuò)誤可能來自于程序本身,也可能是用戶操作的失誤所造成的。當(dāng)有錯(cuò)誤發(fā)生時(shí),我們應(yīng)該有一個(gè)很好的機(jī)制來保障錯(cuò)誤能夠及時(shí)地被排除。當(dāng)應(yīng)用程序出現(xiàn)了錯(cuò)誤的時(shí)候我們就需要程序能提供給我們出錯(cuò)的信息,這樣用戶就能夠很快的找出具體的出錯(cuò)原因,以便尋找合理的途徑去解決它。 系統(tǒng)功能需求分析 聊天系統(tǒng)使該系統(tǒng)的用戶能夠通過客戶端登入到該系統(tǒng),然后直接通過系統(tǒng)實(shí)現(xiàn)用戶之間的交互。首先,需啟動(dòng)服務(wù)器,進(jìn)行服務(wù)器的配置,進(jìn)行正確的服務(wù)器配置和數(shù)據(jù)庫(kù)連接并測(cè)試成功后,開啟服務(wù)器。接下來,在客戶端,該系統(tǒng)的用戶 能夠通過登陸界面進(jìn)入,然后直接與系統(tǒng)交互,進(jìn)行文字傳送和文件傳輸。本系統(tǒng)支持的活動(dòng)列表如下: (1) 用戶注冊(cè)賬號(hào); (2) 用戶登陸系統(tǒng); (3) 生成在線的好友; (4) 用戶可修改密碼; 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 12 (5) 用戶之間交互,進(jìn)行文字傳送; (6) 用戶之間交互,進(jìn)行文件傳輸; (7) 用戶登陸后,可查看好友信息; (8) 用戶登陸后,可查看修改自身信息; (9) 文件傳輸過程中可取消文件傳輸; 系統(tǒng)性能需求分析 ( 1)可靠性高,能在由于系統(tǒng)問題或其它原因產(chǎn)生錯(cuò)誤后, 做 出相對(duì)應(yīng)處理,比如網(wǎng)絡(luò)初始化失敗、 服務(wù)器 不 在線等,可以提示用戶安全退出本程序,在出現(xiàn)不可知的錯(cuò)誤以后,可以盡量安全的退出程序。在程序的設(shè)計(jì)過程中,要求能盡可能多的設(shè)想到用戶使用過程中可能發(fā)生的事件,并能在判斷事件后做出相應(yīng)的處理,使程序具有較高的容錯(cuò)性能。 ( 2) 易 操作性,程序簡(jiǎn)單易懂,容易上手使用。設(shè)計(jì)界面是,簡(jiǎn)化界面的復(fù)雜性,模擬 等現(xiàn)有即時(shí)通訊工具的界面,使用戶能很容易看懂并使用。 ( 3)開發(fā)文檔易理解,保證以后自己二次開發(fā)或他人接手開發(fā)時(shí),能夠清晰的理解整個(gè)系統(tǒng)的設(shè)計(jì)思路和實(shí)現(xiàn)細(xì)節(jié)。 ( 4)模塊化設(shè)計(jì)此軟件的功能,不同的模塊實(shí)現(xiàn)不 同的功能,使得軟件易于以后的維護(hù)與擴(kuò)展,在以后可以更好的完善本軟件的功能,更方便于在工作中的應(yīng)用。 系統(tǒng)設(shè)計(jì) 對(duì)于 C/S 模式的系統(tǒng)來說,一個(gè)號(hào)的系統(tǒng)設(shè)計(jì),將會(huì)從運(yùn)行速度以及效率等方面對(duì)一個(gè)有一個(gè)很大的提高。本章從架構(gòu)設(shè)計(jì),工作流程和功能設(shè)計(jì)三個(gè)方面對(duì)系統(tǒng)的系統(tǒng)架構(gòu)進(jìn)行介紹和分析。 架構(gòu)設(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ì)上將分 3 個(gè)層次,如圖 所示 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 13 圖 本系統(tǒng)最底層是 Socket 通信層,將負(fù)責(zé)客戶端和服務(wù)器之間快速的數(shù)據(jù)交換,它通過接口層和最上面應(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ì)。接口層的目的是提供底層和應(yīng)用層一個(gè)中介媒體的作用,但是不能設(shè)計(jì)得太復(fù)雜,以免延誤數(shù)據(jù)傳送時(shí)間。 在本系統(tǒng)中,客戶端需要將用戶輸入的聊天信息發(fā)往服務(wù)器,那么建立一個(gè)線程一直實(shí)現(xiàn)發(fā)送功能,由于客戶端監(jiān)視用戶輸入也 有一個(gè)監(jiān)視線程在運(yùn)行。這樣,有兩個(gè)線程各司其職。一個(gè)負(fù)責(zé)監(jiān)視輸入,另外一個(gè)線程負(fù)責(zé)將輸入發(fā)送出去。那么再這兩個(gè)線程之間如何通信?最經(jīng)常使用的辦法是使用隊(duì)列( Queue)模式。 Queue 模式是處理消息通信的基本辦法,如圖 所示。 圖 Queue模式 本系統(tǒng)中應(yīng)用 Queue 模式有一個(gè)問題,加入動(dòng)作是由用戶輸入決定的,一旦有用戶輸入,就會(huì)發(fā)生假如動(dòng)作,那么,提取線程會(huì)在隊(duì)列另外一段進(jìn)入死循環(huán)不斷的讀取,這樣才能在隊(duì)列中一旦有對(duì)象事件時(shí),能 夠被立即提取出來,因此必須使用 while(! Thread. interrupted())實(shí)現(xiàn)死循環(huán)。 但是必須注意到,每 次循環(huán)中的提取動(dòng)作執(zhí)行是有前提條件的 —— 隊(duì)列中有對(duì)象事件。如果在有對(duì)象事件時(shí),通知提取線程,這樣可以避免提取線程一直霸占 CPU“ 傻等 ” ,使用線程的 (object obj) 和 (object obj) 可以達(dá)到這個(gè)目的。 提取線程的循環(huán)體內(nèi)設(shè)置 (object obj)進(jìn)行中斷等待,加入對(duì)象后,執(zhí)行 (object obj) ,這樣提取線程將中斷等待,從 Queue 中Socket 底層 接口層 聊天、游戲等應(yīng)用系統(tǒng) 隊(duì)列 Queue 加入 提取 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 14 讀取假如對(duì)象。線程再中斷等待時(shí),將釋放 CPU 的霸占,這樣就有效率地利用了 CPU,如圖 所示: 圖 改進(jìn)后的隊(duì)列 Queue模式 工作流程 只有充分地了解了聊天程序的工作流程,才能對(duì)整個(gè)系統(tǒng)的理解更加深刻,該聊天軟件的工作流程如圖 所示 : 圖 服務(wù)器端啟動(dòng)后先 要調(diào)用 socket()函數(shù)建立一個(gè)流式套接字,并返回引用新套接字的描述符。然后將此套接字描述符與本機(jī)的一個(gè)端口建立關(guān)聯(lián),這由 bind()函數(shù)來完成。繼續(xù)調(diào)用 listen()函數(shù)將套接字置于被動(dòng)的偵聽方式監(jiān)聽連接,并確定能夠同時(shí)處理客戶請(qǐng)求數(shù)目。服務(wù)器只有在調(diào)用了 accept()函數(shù)進(jìn)入等待狀態(tài)之后才可以接受來自客戶端的請(qǐng)求。一旦接收到客戶端通過 connect()發(fā)出的連接請(qǐng)求, accept()將返回一個(gè)新的套接字描述符,通過套接字描述符調(diào)用 send()或加載套接字庫(kù) 初始化套接字 綁定本地機(jī)到套接字 向指定 IP 地址發(fā)送數(shù)據(jù) 關(guān)閉套接字庫(kù)結(jié)束聊天 創(chuàng)建線程用于接受數(shù)據(jù) 隊(duì)列 Queue wait 加入 提取 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 15 recv()函數(shù)即可與客戶端進(jìn)行數(shù)據(jù)收發(fā)。待數(shù)據(jù)傳送完 成,服務(wù)器和客戶端調(diào)用closesocket()關(guān)閉套接字。需要說明的是服務(wù)器此時(shí)關(guān)閉的是此前由 accept()所返回的新套接字,而不是先前開始創(chuàng)建的套接字。在此套接字被關(guān)閉后,服務(wù)器將再次處于阻塞狀態(tài),以等待下一個(gè)客戶端的連接請(qǐng)求并重復(fù)上述過程。 功能設(shè)計(jì) 局域網(wǎng)聊天系統(tǒng)以局域網(wǎng)內(nèi)的用戶為應(yīng)用對(duì)象,經(jīng)過各方面需求分析,該系統(tǒng)主要由服務(wù)器端和客戶端兩部分構(gòu)成,各功能模塊如圖 所示 : 圖 數(shù)據(jù)庫(kù)設(shè)計(jì) 系統(tǒng)提供用戶注冊(cè)功能以及聊天和文件傳輸功能,并且考慮系統(tǒng)的規(guī)模和實(shí)用性,根據(jù)前面篇章對(duì) Access2020 的分析,本系統(tǒng)數(shù)據(jù)庫(kù)采用 Access2020。這一設(shè)計(jì)階段是在需求分析的基礎(chǔ)上進(jìn)行的,目的是設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體以及它們之間的關(guān)系,為邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ) [11]。 本系統(tǒng)主要涉及到的實(shí)體有:用戶信息實(shí)體、群組信息實(shí)體和好友關(guān)系信息實(shí)體。 用戶信息的實(shí)體 ER 圖如圖 所示: 局域網(wǎng)聊天系統(tǒng) 服務(wù)器 客戶端 獲取用戶列表 保存用戶信息 實(shí)現(xiàn) 文字傳送 查看好友信息 用戶注冊(cè)登陸 用戶 修改信息 實(shí)現(xiàn) 文件傳輸 刪 除 聊 天 記錄 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 16 圖 用戶信息的實(shí)體 ER圖 好友關(guān)系信息的實(shí)體 ER 圖如圖 所示: 圖 好友關(guān)系信息的實(shí)體 ER圖 群組關(guān)系信息的實(shí)體 ER 圖如圖 所示: 圖 群關(guān)系信息的實(shí)體 ER圖 系統(tǒng)具有以上描述的三個(gè)數(shù)據(jù)實(shí)體,各實(shí)體之間的實(shí)體關(guān)系如圖 所示: 群 群組人數(shù) 群組編號(hào) 群所屬者 群組名稱 好 友 群組 編號(hào) 用戶 號(hào)碼 好友關(guān)系編號(hào) 好友 號(hào)碼 用 戶 用戶 號(hào)碼 用戶昵稱 登陸密碼 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 17 圖 ER圖 本數(shù)據(jù)庫(kù)中包含三個(gè)表,用戶信息表 (UserInf),群組信息表 (GroupInf),好友關(guān)系信息表 (FriendList),三個(gè)表的具體描述如下表 所示: 表 聊天系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)表 表名稱: UserInf 用途:保存用戶基本信息 主鍵: cNum 字段 類型 描述 空 說明 cUserName char(10) 用戶昵稱 Y 如: caro cNum char(8) 用戶 號(hào)碼 自動(dòng)增加 vcQuserPwd char(50) 登錄密碼 表名稱: GroupInf 用途:保存群組信息 主鍵: iGroupId 字段 類型 描述 空 說明 iGroupId int(4) 群組編號(hào) cGroupName char(10) 群組名稱 如:我的好友 GroupOwner char(8) 群組所屬者 用 戶 群組編號(hào) 用戶QQ號(hào)碼 群 好友關(guān)系 成員關(guān)系 m n 1 1 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 18 表 (續(xù)) 表名稱: FriendList 用途:保存好友關(guān)系 主鍵: iFriendId 字段 類型 描述 空 說明 cNum char(8) 用戶 號(hào)碼 自動(dòng)增加 cFriendNum char(8) 好友 號(hào)碼 iGroupId int(4) 群組編號(hào) iFriendId int(4) 好友關(guān)系編號(hào) 自動(dòng)增加 基于 VC++ Socket 的多線程網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計(jì) 19 4 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 經(jīng)過系統(tǒng)的總體設(shè)計(jì)之后,系統(tǒng)的需求分析以及大致的設(shè)計(jì)方向已經(jīng)確定,本章將會(huì)從系統(tǒng)的通信方式,客戶端與服務(wù)器端的設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),以及服務(wù)器端和客戶端的實(shí)現(xiàn)幾個(gè)方面深層次的介紹系統(tǒng)所 涉及 的關(guān)鍵技術(shù),通過這些技術(shù)的實(shí)現(xiàn),系統(tǒng)
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1