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

正文內(nèi)容

文件傳輸與聊天系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2024-11-23 16:24本頁(yè)面

【導(dǎo)讀】的大平臺(tái)增強(qiáng)了人們之間的溝通交流。本設(shè)計(jì)應(yīng)用SOCKET技術(shù)在WINDOWS平。臺(tái)上實(shí)現(xiàn)文件傳輸與聊天系統(tǒng)。設(shè)計(jì);撰寫(xiě)用以保證通信安全的密碼算法,設(shè)計(jì)相關(guān)的密鑰管理方案。代碼的編制和最終的測(cè)試都會(huì)得到完整的實(shí)現(xiàn)。設(shè)計(jì),而服務(wù)器的網(wǎng)絡(luò)設(shè)計(jì)更為重要。統(tǒng)的源代碼和生成了可執(zhí)行文件。軟件功能完整,應(yīng)有即時(shí)消息通信、文件傳輸?shù)取;竟δ?,能支持的客戶端的個(gè)數(shù)不少于254個(gè);軟件界面友好;可實(shí)現(xiàn)P2P通信,及通信消息等進(jìn)行管理;能實(shí)現(xiàn)查詢操作。

  

【正文】 t_31{ MYINFO myinfo。 }。 數(shù)據(jù)內(nèi)容描述: myinfo 存放個(gè)人的所有資料。 (28) 功能號(hào) 32 功能描述:客戶端在登陸的時(shí)候請(qǐng)求隨機(jī)數(shù),用于生成動(dòng)態(tài)加密信息。 宏定義: define OP_RANDOM_REQ 32 數(shù)據(jù)內(nèi)容格式: struct content_32 { char userNum[MAX_USERNUM]。 }。 數(shù)據(jù)內(nèi)容描述: userNum 為登陸者自己的號(hào)碼。 (29) 功能號(hào) 33 功能描述:服務(wù)器返回隨機(jī)數(shù)給客戶端,事實(shí)上是對(duì)功能號(hào) 32 請(qǐng)求的應(yīng)答。 宏定義: define OP_RANDOM_RESPONSE 33 數(shù)據(jù)內(nèi)容格式: struct content_33 { UINT random。 }。 數(shù)據(jù)內(nèi)容描述: random 為服務(wù)器隨機(jī)生成的隨機(jī)數(shù)。 (30) 功能號(hào) 34 功能描述:客戶端刪除了某個(gè)好友后 服務(wù)器通知該被刪除者。 宏定義: define OP_USER_DELETED 34 數(shù)據(jù)內(nèi)容格式: struct content_34 { char toNum[MAX_USERNUM]。 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 26 頁(yè) 共 45 頁(yè) char fromNum[MAX_USERNUM]。 }。 數(shù)據(jù)內(nèi)容描述: toNum 為被刪除者的號(hào)碼; fromNum 為提出刪除請(qǐng)求的用戶號(hào)碼。 應(yīng)用層協(xié)議流程 消息格式實(shí)際上已經(jīng)定義了消息之間的互動(dòng)關(guān)系。如下表 所示顯示了消息之間的關(guān)系。 表 消息之間的關(guān)系 客戶端發(fā)送給 服 務(wù) 器 服務(wù)器發(fā)送給客戶端 0(激活) 0(激活) 1(注冊(cè)) 2(注冊(cè)應(yīng)答) 32(隨機(jī)數(shù)請(qǐng)求) 33(隨機(jī)數(shù)應(yīng)答) 3(登陸) 4(登陸應(yīng)答)、 28(好友列表)、 31(個(gè)人信息)、 10(狀態(tài)改變應(yīng)答) 5(發(fā)送消息) 6(消息轉(zhuǎn)發(fā)) 無(wú) 8(服務(wù)器發(fā)送系統(tǒng)消息) 9(狀態(tài)改變) 10(狀態(tài)改變應(yīng)答) 12(個(gè)人信息修改) 13(個(gè)人信息修改應(yīng)答) 14(查看好友信息) 15(查看好友應(yīng)答) 16(查詢一個(gè)用戶) 17(查詢失?。┗?18(查詢成功返回好友信息) 19(查詢?cè)诰€用戶) 20(查詢?cè)诰€用戶應(yīng)答) 21(添加好友 請(qǐng)求) 22(添加好友應(yīng)答)、 23(添加好友通知)、 26(添加好友拒絕) 29(刪除好友) 34(刪除好友通知) 30(退出系統(tǒng)) 10(狀態(tài)改變應(yīng)答) 其中表中的數(shù)字表示對(duì)應(yīng)的功能號(hào),括號(hào)內(nèi)為功能描述。表中每行的意思為當(dāng)客戶端發(fā)送該行左邊的功能號(hào)的消息給服務(wù)器時(shí),服務(wù)器經(jīng)過(guò)一系列處理后返回該行右邊的功能號(hào)的消息給客戶端。當(dāng)有一方?jīng)]有消息發(fā)送時(shí),另一發(fā)是單向發(fā)送的。比如表中的 8 號(hào)功能消息,左邊為“無(wú)“。 文件傳輸與聊天系統(tǒng)的總體模塊分析以及網(wǎng)絡(luò)通信模塊設(shè)計(jì) 總體模塊分析 整個(gè)系統(tǒng) 分為客戶端和服務(wù)器,采取典型的 C/S 模式,而客戶之間的文件傳輸找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 27 頁(yè) 共 45 頁(yè) 采取 P2P 模式??蛻舳朔譃樗拇竽K:界面顯示模塊,客戶端通信模塊,安全模塊,客戶端數(shù)據(jù)處理模塊。其中界面顯示模塊用于顯示界面,客戶端通信模塊用于處理與網(wǎng)絡(luò)通信相關(guān)的內(nèi)容。他們之間通過(guò)客戶端數(shù)據(jù)處理模塊聯(lián)系起來(lái)。當(dāng)需要發(fā)送消息給外界的時(shí)候,界面顯示模塊提取到相關(guān)內(nèi)容通過(guò)數(shù)據(jù)處理模塊調(diào)用通信模塊的某個(gè)函數(shù),發(fā)送給外界,這里的外界指別的客戶端或服務(wù)器;當(dāng)客戶端收到網(wǎng)絡(luò)上的某個(gè)消息的時(shí)候,首先是通信模塊獲取到有關(guān)消息,然后通過(guò)數(shù)據(jù)處理模塊反饋到界面顯示模 塊中去。安全模塊相對(duì)獨(dú)立,通信模塊需要調(diào)用安全模塊對(duì)數(shù)據(jù)進(jìn)行加密,解密。 服務(wù)器端分為四大模塊:服務(wù)器端通信模塊,安全模塊,數(shù)據(jù)庫(kù)操作模塊,服務(wù)器端數(shù)據(jù)處理模塊。其中數(shù)據(jù)庫(kù)操作模塊用于進(jìn)行數(shù)據(jù)庫(kù)的查詢修改插入刪除操作;服務(wù)器端通信模塊用于處理與網(wǎng)絡(luò)通信相關(guān)的內(nèi)容,他們之間通過(guò)服務(wù)器端數(shù)據(jù)處理模塊聯(lián)系起來(lái);當(dāng)服務(wù)器端通信模塊提取到網(wǎng)絡(luò)上的某個(gè)消息的時(shí)候,通過(guò)數(shù)據(jù)處理模塊調(diào)用數(shù)據(jù)庫(kù)操作模塊,進(jìn)行相關(guān)操作;如果需要通信的話,再通過(guò)數(shù)據(jù)處理模塊調(diào)用服務(wù)器端通信模塊。安全模塊和客戶端一樣,是公用的。 系統(tǒng)模塊之間的關(guān) 系如圖 所示: 圖 系統(tǒng)模塊關(guān)系圖 網(wǎng)絡(luò)通信模塊設(shè)計(jì) 服務(wù)器網(wǎng)絡(luò)通信設(shè)計(jì) 如圖 所示為服務(wù)器網(wǎng)絡(luò)管理活動(dòng)圖。 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 28 頁(yè) 共 45 頁(yè) 圖 服務(wù)器網(wǎng)絡(luò)管理活動(dòng)圖 其中服務(wù)器開(kāi)啟后創(chuàng)建了兩種類(lèi)型的套接字,一種是 TCP 套接字,主要進(jìn)行接收用戶的注冊(cè)和登陸的運(yùn)作包括返回好友列表;另外一個(gè)是 UDP 套接字,對(duì)于除了注冊(cè)和登陸之外的其他請(qǐng)求的運(yùn)作,比如發(fā)送消息,狀態(tài)改變等。 對(duì)于 TCP 套接字,當(dāng)接受到新連接的時(shí)候,隨即在新的線程里面處理該新連接,每次接收到數(shù)據(jù)后就進(jìn)行相關(guān)的事務(wù)處理,如圖 所示為 TCP 事務(wù)處理的過(guò)程。 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 29 頁(yè) 共 45 頁(yè) 圖 TCP 事務(wù)處理 圖上的數(shù)字表示系統(tǒng)對(duì)應(yīng)的功能號(hào)。 UDP 的事務(wù)處理與 TCP 的事務(wù)處理類(lèi)似,如圖 所示顯示了 UDP 事務(wù)處理的過(guò)程。其中圖中的數(shù)字為相關(guān)的功能號(hào)碼。 服務(wù)器每次發(fā)送給客戶端的消息需要經(jīng)過(guò)相關(guān)處理,比如封裝和加密等,如圖 所示顯示了發(fā)送消息的過(guò)程。 接收到的數(shù)據(jù)包 數(shù)據(jù)包的拆分 數(shù)據(jù)內(nèi)容的解密 判斷版本號(hào)是否 為當(dāng)前版本 否 分析功能號(hào) 注冊(cè)請(qǐng)求 隨機(jī)數(shù)請(qǐng)求 登陸請(qǐng)求 1 32 3 發(fā)送 2 消息 發(fā)送 33 消息 發(fā)送 4, 28, 31, 10 消息 分析下一個(gè)數(shù)據(jù)包 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 30 頁(yè) 共 45 頁(yè) 圖 UDP 事務(wù)處理 圖 發(fā)送 數(shù)據(jù)的過(guò)程 接收到的數(shù)據(jù)包 數(shù)據(jù)包的拆分 數(shù)據(jù)內(nèi)容的解密 判斷版本號(hào)是否為當(dāng)前版本號(hào) 分析功能號(hào) 激活 0 發(fā)送 0 消息 傳輸消息 5 發(fā)送 6 消息 狀態(tài)改變 9 發(fā)送 10 消息 個(gè)人信息修改 12 發(fā)送 13 消息 查看好友信息 14 發(fā)送 15 消息 查詢一個(gè)用戶 16 發(fā)送 17 或 18 消息 查詢?cè)诰€用戶 發(fā)送 20 消息 19 添加好友請(qǐng)求 發(fā)送 22,23,24 消息 21 刪除好友 29 退出系統(tǒng) 發(fā)送 34 消息 發(fā)送 10 消息 30 加密 原始數(shù)據(jù)長(zhǎng)度 版本號(hào) 原始數(shù)據(jù) 功能號(hào) 加密后的數(shù)據(jù)長(zhǎng)度 加密后的數(shù)據(jù) 數(shù)據(jù)封裝成數(shù)據(jù)包 發(fā)送數(shù)據(jù) 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 31 頁(yè) 共 45 頁(yè) 客戶端網(wǎng)絡(luò)通信設(shè)計(jì) 客戶端網(wǎng)絡(luò)通信設(shè)計(jì)相對(duì)比較簡(jiǎn)單。客戶端采用異步非阻塞的套接字,因此發(fā)送數(shù)據(jù)和接收數(shù)據(jù)是同時(shí)進(jìn)行的,不會(huì)因?yàn)榈却粋€(gè)事件的發(fā)生而阻塞后面的操作。對(duì)應(yīng)服務(wù)器的套接字,客戶端也需要?jiǎng)?chuàng)建兩個(gè)套接字和服務(wù)器進(jìn)行通信。由于服務(wù)器的接收過(guò)程剛好是客戶端的發(fā)送過(guò)程;服務(wù)器的發(fā)送過(guò)程是客戶端的接收過(guò)程。因此,本文在這里只介紹構(gòu)架客戶端網(wǎng)絡(luò)設(shè)計(jì)的總體框架。 圖 客戶端網(wǎng)絡(luò)基本框架 客戶端的網(wǎng)絡(luò)設(shè)計(jì)和服務(wù)器端是一一對(duì)應(yīng)的,服務(wù)器根據(jù) 客戶端的請(qǐng)求做出不同的處理,同時(shí)客戶端對(duì)于來(lái)自服務(wù)器的數(shù)據(jù)也做出同步的處理。 客戶端點(diǎn)擊登陸 創(chuàng)建 TCP 和 UDP 兩種套接字 根據(jù)不同的要求發(fā)送不同的數(shù)據(jù) 包 接收數(shù)據(jù)并根據(jù)不同的功能號(hào)進(jìn)行不同的處理 發(fā)送數(shù)據(jù) 接收數(shù)據(jù) 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 32 頁(yè) 共 45 頁(yè) 4 文件傳輸與聊天系統(tǒng)網(wǎng)絡(luò)詳細(xì)設(shè)計(jì) 公共通信相關(guān)類(lèi)以及函數(shù)描述 圖 公共通信相關(guān)類(lèi)類(lèi)圖 下面描述服務(wù)器和客戶端通信用到的公用類(lèi),這些在服務(wù)器和客戶端都要得到相同的實(shí)現(xiàn)。 CPacketCommon 類(lèi) 該類(lèi)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包封裝功能。 主要方法說(shuō)明: ① CPacketCommon(char* _packet)。 這個(gè)是類(lèi)的構(gòu)造函數(shù),傳入的參數(shù)為要拆分的數(shù)據(jù)包。使用了這個(gè)構(gòu)造 函數(shù),說(shuō)明程序是為了拆分 數(shù)據(jù)包。 ② CPacketCommon(UINT _ver,UINT _opNum,UINT _dataLen,char* _payload)。 這個(gè)也是類(lèi)的構(gòu)造函數(shù),是對(duì)①構(gòu)造函數(shù)的重載函數(shù)之一。傳入?yún)?shù) _ver 表示版本號(hào); _opNum 表示功能號(hào); _dataLen 表示數(shù)據(jù)內(nèi)容的長(zhǎng)度; _payload 表示要封裝的數(shù)據(jù)內(nèi)容。調(diào)用該構(gòu)造函數(shù),表示程序是為了數(shù)據(jù)包的封裝。 ③ void split()。 該函數(shù)表示拆分?jǐn)?shù)據(jù)包。和①函數(shù)一起使用。 ④ void wrap()。 該函數(shù)表示封裝數(shù)據(jù)包。和②函數(shù)一起使 用。 MD5 類(lèi) 該類(lèi)提供數(shù)據(jù)包的 MD5 加密。該類(lèi)主要用一個(gè)函數(shù)如下: 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 33 頁(yè) 共 45 頁(yè) CString GetMD5(char* pBuf, UINT nLength)。 該函數(shù)提供字符數(shù)組的 MD5 加密。參數(shù) pBuf 為要加密的字符數(shù)組, nLength為字符數(shù)組的長(zhǎng)度,函數(shù)返回加密后的 32 為 MD5 密文, CString 類(lèi)型。 DES 類(lèi) 該類(lèi)提供數(shù)據(jù)包的 DES 加密解密功能。主要提供了兩個(gè)函數(shù): ① BOOL DesEncrypt(char* in, char* out, int datalen)。 該函數(shù)提 供 DES 加密過(guò)程。字符數(shù)組 in 為要加密的數(shù)據(jù), out 為加密后數(shù)據(jù)存放的數(shù)組, datalen 為加密數(shù)據(jù)的長(zhǎng)度。 ② BOOL DesDecrypt(LPCBYTE in, LPBYTE out, int datalen)。 該函數(shù)提供 DES 解密過(guò)程。字符數(shù)組 in 為要解密的數(shù)據(jù), out 為解密后數(shù)據(jù)存放的數(shù)組, datalen 為解密數(shù)據(jù)的長(zhǎng)度。 服務(wù)器通信類(lèi)以及相關(guān)函數(shù)描述 圖 服務(wù)器通信類(lèi)類(lèi)圖 CServerListen 類(lèi) 該類(lèi)開(kāi)啟監(jiān)聽(tīng)端口接收客戶端的連接并在新的線程中為之創(chuàng)建新的套 接字。該類(lèi)繼承于 CAsyncSocket,主要重載一個(gè)函數(shù)如下: virtual void OnAccept(int nErrorCode)。 當(dāng)有連接進(jìn)入的時(shí)候,調(diào)用該函數(shù)。 CTCPClient 類(lèi) 該類(lèi)繼承 CAsyncSocket,應(yīng)用于一個(gè)新的套接字。對(duì)于 CServerListen 類(lèi)中OnAccept 連接的一個(gè)新套接字中將創(chuàng)建該類(lèi)的一個(gè)實(shí)例,以后服務(wù)器就通過(guò)與該找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 第 34 頁(yè) 共 45 頁(yè) 實(shí)例的通信進(jìn)行信息的交換。 該類(lèi)主要重載以下函數(shù): ① virtual void OnReceive(int nErrorCode)。 該函數(shù)重載了父類(lèi)的同名函數(shù)。當(dāng)有數(shù)據(jù)到達(dá)的時(shí)候,觸發(fā)該函數(shù)的發(fā)生。該函數(shù)里面就可以調(diào)用 Receive 函數(shù)來(lái)接收數(shù)據(jù)。 ② virtual void OnClose(int nErrorCode)。 該函數(shù)重載了父類(lèi)的同名函數(shù)。當(dāng)有對(duì)方客戶端關(guān)閉了套接字的時(shí)候,該函數(shù)觸發(fā)。該函數(shù)將關(guān)閉本套接字。 ③ void dataManage(char* pHeader,char* pContent)。 該函數(shù)進(jìn)行數(shù)據(jù)的初步處理,包括數(shù)據(jù)的解密并根據(jù)不同的功能號(hào)分別調(diào)用CDataProcessing 類(lèi)中的相關(guān)函數(shù)進(jìn) 行數(shù)據(jù)庫(kù)以及其他處理。參數(shù) pHeader 為數(shù)據(jù)包的頭部, pContent 為數(shù)據(jù)內(nèi)容。 ④ bool sendData(char* pData, int nLen)。 該函數(shù)主要用于數(shù)據(jù)的發(fā)送。但該函數(shù)還需要實(shí)現(xiàn)數(shù)據(jù)內(nèi)容的 DES 加密,并修改數(shù)據(jù)包頭部的相關(guān)信息,然后再調(diào)用發(fā)送函數(shù) Send 進(jìn)行數(shù)據(jù)的發(fā)送。 TCP 中所有數(shù)據(jù)的發(fā)送都將調(diào)用該函數(shù)。 pData 為封裝后的數(shù)據(jù), nLen 為該封裝數(shù)據(jù)的長(zhǎng)度。 UDPSession 函數(shù) UINT UDPSession(LPVOID pParam); 該函數(shù)為 UDP 線程函數(shù),每到達(dá)一個(gè)合法的 UDP 數(shù)據(jù)包請(qǐng)求,都將創(chuàng)建一個(gè)這樣的新的線程。該線程里面拆分?jǐn)?shù)據(jù)包并進(jìn)行數(shù)據(jù)包的分析,根據(jù)不同的功能號(hào)調(diào)用 CDataProcessing 類(lèi)中的相關(guān)函數(shù)進(jìn)行數(shù)據(jù)庫(kù)以及其他的網(wǎng)絡(luò)操作。 CUDPSock 類(lèi) 該類(lèi)實(shí)現(xiàn)和客戶端 UDP 數(shù)據(jù)包的通信過(guò)程。主要函數(shù): ① virtual void OnReceive(int nErrorCode)。 該函數(shù)重載了父類(lèi)的同名函數(shù)。當(dāng)有數(shù)據(jù)到達(dá)的時(shí)候,觸發(fā)該函數(shù)的發(fā)生。該
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1