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

正文內(nèi)容

基于tcpip的網(wǎng)絡聊天工具的設計與實現(xiàn)—計算機畢業(yè)設計-資料下載頁

2024-11-23 16:38本頁面

【導讀】Socket接口是TCP/IP網(wǎng)絡的API,WindowsSockets是一個。本文通過論述了Windows環(huán)境下的實現(xiàn)計算機數(shù)據(jù)傳輸服務的機。功能以及通過TCP/IP協(xié)議實現(xiàn)異構(gòu)型網(wǎng)絡互連的機理。對TCP/IP協(xié)議提供的兩種通信功。能進行了分析,辯證地提出了它們不同的應用場合。本聊天工具使用VC++語言和較成熟的微。并從系統(tǒng)的需求分析、系統(tǒng)分析、詳細設計的整個開發(fā)過程進行全面論述。應用程序的編程模型和實現(xiàn)要點,對用戶開發(fā)應用程序有一定參考意義。

  

【正文】 API 再次封裝,所以 MFC 相對于 WIN API 開發(fā)更具備效率優(yōu)勢,但為了對 WINDOWS 開發(fā)有一個較為全面細致的認識,筆者在這里還是以講解 WIN API 的相關(guān)內(nèi)容為主線。 開發(fā)及運行環(huán)境 硬件平臺: 3) CPU: P4 。 4) 內(nèi)存: 256MB 以上。 軟件平臺: 5) 操作系統(tǒng): Windows XP/ Windows 2020。 6) 開發(fā)語言: VC++ 7) 開發(fā)平臺: Visual Studio 2020 8) 分辨率:最佳效果 1024 768 像素 本次畢業(yè)采用了面向連接的數(shù)據(jù)流,即基于 TCP 協(xié)議的連接方式,其 工作流程如圖 1 所示。 圖 1 面向連接的 Socket 工作流程圖 系統(tǒng)穩(wěn)定性:在設計該系統(tǒng)時,很重要的一個問題就是系統(tǒng)的長期穩(wěn)定運行,因為客戶端可能很多個,考慮到系統(tǒng)的運行環(huán)境等條件,必須從系統(tǒng)分析的高度給與足夠重視,保證服務器能夠較長時間的運行 系統(tǒng)健壯性:系統(tǒng)需要長期穩(wěn)定地運行,而用戶在日常的工作中要進行各種各樣的操作,難免會產(chǎn)生各種各樣的誤操作和錯誤,這就打破了本系統(tǒng)的正常運行流程,可能導致預想不到的后果。因此,在本系統(tǒng)的設計過程中,我們將預先考慮各種各樣的誤操作及后果,采取相應的預防措施,確保不產(chǎn)生災難 性的后果,保證系統(tǒng)的健壯性。 良好的適應性:系統(tǒng)必須具有良好的擴展能力和修改方便的特點,以適應不同的變化。只有建立了穩(wěn)定的模型和良好的數(shù)據(jù)接口,才能保證系統(tǒng)具有良好的適應性。 界面友好:用戶界面是聊天工具與主要環(huán)節(jié),所以,應充分考慮用戶的習慣和喜好,以方便用戶使用為原則。 本次畢業(yè)設計聊天工具主要實現(xiàn)以下功能: 3) 客戶端功能:用戶登錄,進入聊天室。廣播聊天、聊天室聊天、二人私聊、文件傳輸四個功能。 4) 服務端功能:顯示所有在線用戶,選擇某用戶后可以進行刪除操作 客戶端 功能模塊圖 圖 2 客戶端功能模塊 系統(tǒng) 設計 的 原理 本程序基 TCP/IP協(xié)議。采用服務器與客戶端模式。選用 VC++程序設計語言。服務器端連接 過程簡化為: ① 設置連接所用的端口 ② 開始監(jiān)聽此端口 ③ 接到請求后建立連接 ④ 可以發(fā)送和接收數(shù)據(jù) ⑤ 不用了就關(guān)閉 Socket連接 。 客戶端簡化 為: ① 設置服務器地址 r要連接的地址 ② 設置連接是所用到的端口 ③ 發(fā)送連接請求 ④ 建立連接成功 ⑤ 可以發(fā)送和接收數(shù)據(jù) ⑥ 不用了就關(guān)閉 Socket連接。 MFC Windows Socket 類 包括 CAsyncSocket 和 CSocket 類 。 Visual C++對眾多的 socket 函數(shù)進行了封裝 , MFC 提供的封裝類是 : CAsyncSocket 和 CSocket 類 , 它們使編程工作變得相對簡單尤其是 CSocket 類 :首先 CAsyncSocket 類所提供的唯一的抽象就是將與套接字相聯(lián)系的 Windows 消息以回調(diào)函數(shù)的形式表示 , 因此它帶來的唯一方便就是程序員無需自行處理 Winsock 的 I/O 模型 , 而對于如阻塞處理、字節(jié)順序差異以及 Unicode 等依然負有責任并有靈活的控制 權(quán)。 其次, CSocket 類是 CAsyncSocket 類的派生類 , 它提供了對通過Carchive 對象使用套接字工作的更高級抽象。 CSocket 類的使用比 CAsynCSocket 類更加容易 , 它繼承了 CAsyncSocket 類的許多封裝了 API 的成員函數(shù) , 并且管理了通信的大多數(shù)方面 , 這使得用戶從原來不得不使用原始 API 或者 CAsyncSocket 類的煩雜的工作中解脫出來。更加重要的是 CSocket 和 Carchive 類提供了對于同步操作 Carchive 對象十分重要的阻塞功能 , 且 CSocket 通過與 CSocketFile 和 Carchive 一起使用來管理對象數(shù)據(jù)的發(fā)送和接收 , 使發(fā)送數(shù)據(jù)和操作變得簡單明了 系統(tǒng)功能設計 客戶端 功能 程序設計 首先介紹客戶端的用戶登錄窗體,輸入用戶名和服務器 ip 地址后進入聊天室。 客戶端 廣播聊天 私人聊天 聊天室聊天 文件傳輸 圖 3 客戶端登陸窗口 然后出現(xiàn)圖 4,客戶端聊天主窗體。 圖 4 功能及模塊實現(xiàn)窗口 圖 4 中聊天對象下拉框中,包括所有人選項和登陸某某用戶名的 下拉框選項,如下圖 5, 圖 5 選擇用戶下拉框 點擊文件傳輸按鈕后,在文件傳輸對話框中會顯示相應的傳輸文件,只要雙擊你所需要的文件,選擇相應的存儲路徑后即可存儲文件。 本實驗采用上述方式實現(xiàn)廣播聊天、聊天室聊天、二人私聊、文件傳輸四個功能 輸入用戶名 服務器 ip 登陸 取消 消息顯示框 發(fā)送消息 傳輸文件 (下拉框 )選擇聊天對象 (復選框 )二 人私聊 所有人 張三 李四 … 服務端程序設計 啟動服務端后進入 顯示所有在線用戶,選擇某用戶后可以進行踢線操作。 本實驗采用 VS 2020 為平臺利用 VC++開發(fā)語言進 行程序編寫。 下面介紹 Client 端基本類: CChatSocket 繼承與 CSocket 類,主要用于 TCP/IP 通訊連接 CSendview 類用戶顯示消息: 張三 **時間 進入聊天室 李四 **時間 進入聊天室 在線用戶: 刪除 退出 5 系統(tǒng)功能實現(xiàn) 服務器端有個 CSocket 的派生類 CListeningSocket對象指針來監(jiān)聽端口等待用戶登陸 , 而用另一個 CSocket 的派生類對象 CClientSocket 的指針組來處理和每一個客戶端的交互過程。派生類 CListeningSocket的回調(diào)函數(shù) OnAccpet()與客戶端建立套接字層次的連接。派生 類CClientSocket 的回調(diào)函數(shù) OnReceive()與接收每一個已連接的數(shù)據(jù)傳輸。 啟動服務端,顯示服務端界面: 圖 6 用戶管理界面 打開客戶端,顯示客戶端登陸界面: 從名稱的下拉列表框中選擇登錄的用戶,單擊確定,進入該用戶聊天的界面,同時服務端也會顯示出該用戶的進入信息: 在聊天對象中,選擇所有人,在聊天信息中,輸入信息,單擊發(fā)送信息。 此功能用到的 代碼 如下: void CSendView::OnSend() { CChatDoc* pDoc = GetDocument()。 ASSERT_VALID(pDoc)。 CString strText。 GetDlgItem(IDC_TEXT)GetWindowText(strText)。 UpdateData(TRUE)。 if(strText==) return。 CString ll。 int j=()。 if(j=0) (%d,j)。 pDoc=ll。 pDoc=pDocm_strHandle。 pDoc=to。 if(sec) pDoc=TRUE。 else pDoc=FALSE。 pDoc=strText。 BYTE i1=GetRValue(pDocclr)。 BYTE i2=GetGValue(pDocclr)。 BYTE i3=GetBValue(pDocclr)。 (pDoc).Format(%d,%d,%d,i1,i2,i3)。 pDocSendMsg()。 strText=_T()。 GetDlgItem(IDC_TEXT)SetWindowText(strText)。 } 當有很多用戶進入聊天室后,在聊天對象中,選擇想要聊天的人名,勾選二人世界,在聊天信息中,輸入信息,單擊發(fā)送信息。這時信息只顯示在聊天人的客戶端中,而在其他客戶端,并不顯示該信息。 文件傳輸: 局域網(wǎng)內(nèi)文件分發(fā)的 編程思路局域網(wǎng)內(nèi)文件分發(fā)的編程思路是 , 服務器軟件和客戶端軟件使用同一個端口 , 待連接以后 , 客戶端給服務器發(fā)送請求 , 包括待傳文件的文件名、文件大小等 , 如果服務器接受 , 就開始傳文件。 Socket 通信在 Windows 中以排隊形式由操作系統(tǒng)進行處理 , 基本方式是請求和應答 , 而且接收方和發(fā)送方必須相互協(xié)同工作 ,否則就會造成數(shù)據(jù)丟失。因此 ,不能用類似于 for 的循環(huán)語句來實現(xiàn)對多組數(shù)據(jù)的發(fā)送 ,更不能用循環(huán)語句來接收數(shù)據(jù) 。 另外 , 對于較大的文件 , 應該分批傳輸 ,一般每次 1至 4KB為宜 ,以保證數(shù)據(jù)傳輸?shù)姆€(wěn) 定性 , 同時也不至于過多地占用系統(tǒng)資源。 只要在添加需要傳送的文件,其可以顯示文件的大小和路徑: 接受文件: 單擊接受文件,打開文件傳輸窗體,雙擊需要接受的文件,選擇保存路徑,開始傳輸: 此功能用到的 主要 代碼 如下: void CClient_FileTransferDlg::OnDblclkListFilelist(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here NMLISTVIEW* pListView = (NMLISTVIEW*)pNMHDR。 int iSel = pListViewiItem。 if(iSel == 1) return。 CString strFileName = (iSel, 0)。 CFileDialog dlg(FALSE, NULL, (0), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, All Files(*.*)|*.*||, this)。 if(() != IDOK) return。 CString strClientPath = ()。 CFile file。 BOOL bOpen = (strClientPath, CFile::modeCreate|CFile::modeWrite, NULL)。 if(!bOpen) { MessageBox(文件創(chuàng)建或打開失?。≌埓_認路徑再重試! )。 return。 } ()。 MSGREQUEST msgRequest。 = FILEDATA。 = (iSel)。 = 0。 strcpy(, (0))。 strcpy(, (iSel, 5))。 DWORD dwStartTick = GetTickCount()。 char sStartTick[20]。 sprintf(sStartTick, %u, dwStartTick)。 (iSel, 6, sStartTick)。 m_pClientRequestFile(msgRequest)。 *pResult = 0。} 6 結(jié)束語 如今 , 人們不僅可以在網(wǎng)上查詢自己需要的資源 , 而且可以通過網(wǎng)絡進行實時的溝通 , 從實時性和有效性上都超過了用信件和 EMail, 并且在費用上要低于電話。因而各種聊天服務備受用戶青睞 , 在這方面的開發(fā)與應用也較多 [1], 聊天服務也成為互聯(lián)網(wǎng)提供的重要服務之一。互聯(lián)網(wǎng)的大多數(shù)網(wǎng)站都建有聊天室 , 并且有專業(yè)聊天網(wǎng)站提供聊天服務。進入 20 世紀 90 年代后 , 隨著計算機和網(wǎng)絡技術(shù)的發(fā)展 ,很多數(shù)據(jù)處理系統(tǒng)都采用開放系統(tǒng)結(jié)構(gòu)的客戶機 /服務器 (Client/Server)網(wǎng)絡模型 ,即客戶機向服務器提交請求 ,服務器對請求做相應的處理兵執(zhí)行被請求的任務 ,然后將結(jié)構(gòu)返回給客戶機。這種方式隱含了在建立客戶機 /服務器間通信是的非對稱性??蛻魴C /服務器模型工作時要求有一套為客戶機和服務器所共識的慣例來保證服務能夠被提供 ( 或被接受 ) , 這一套慣例包含了一套協(xié)議 , 它必須在通信的兩頭都被實現(xiàn)。根據(jù)不同的實際情況 , 協(xié)議可能是對稱的或非對稱的。在對稱的協(xié)議中每一方都有可能扮演主從角色 。 在非對稱協(xié)議中一方被不可改變地認為是主機 , 而另一方則是從機。一個對稱協(xié)議地例子是 Inter中用于終端仿真地 Tel, 而非對稱 協(xié)議地例子是 Inter 中的。無論具體的協(xié)議是對稱的或是非對稱的 , 當服務被提供時必然存在客戶進程和服務進程。一個服務程序通常在一個眾所周知地地址監(jiān)聽客戶對服務地請求 , 也就是說 , 服務進程一直處于休眠狀態(tài) , 直到一個客戶對這個服務地址提出連接請求。在這個時刻 , 服務程序被“驚醒 ”并且為客戶提供服務 對客戶地請求作出適當?shù)姆磻? 本文以 Visual C++的 MFC(微軟基本類庫 )作為基本的開發(fā)基礎 , 使用 Socket 套接字作為開發(fā)的應用程序開發(fā)模型 , 完成了網(wǎng)絡在線聊天系統(tǒng)的設計及實現(xiàn)過程 , 通過測試表明該系統(tǒng)可以方便的建立連接 , 斷開連接 , 實現(xiàn)網(wǎng)絡在線聊天系統(tǒng)的在線好友查找 , 發(fā)送消息和接收消息等功能。 通過本次畢業(yè)設計 ,
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1