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

正文內(nèi)容

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

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

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

  

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