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

正文內(nèi)容

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

2024-11-23 16:24本頁面

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

  

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