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

正文內(nèi)容

基于tcpip的網(wǎng)絡(luò)聊天工具的設(shè)計與實現(xiàn)—計算機畢業(yè)設(shè)計-文庫吧

2025-07-22 08:47 本頁面


【正文】 是聊天工具與主要環(huán)節(jié),所以,應(yīng)充分考慮用戶的習(xí)慣和喜好,以方便用戶使用為原則。本次畢業(yè)設(shè)計聊天工具主要實現(xiàn)以下功能:1) 客戶端功能:用戶登錄,進入聊天室。廣播聊天、聊天室聊天、二人私聊、文件傳輸四個功能。2) 服務(wù)端功能:顯示所有在線用戶,選擇某用戶后可以進行刪除操作客戶端功能模塊圖客戶端廣播聊天私人聊天聊天室聊天文件傳輸圖2 客戶端功能模塊 系統(tǒng)設(shè)計的原理本程序基TCP/IP協(xié)議。采用服務(wù)器與客戶端模式。選用VC++程序設(shè)計語言。服務(wù)器端連接過程簡化為:①設(shè)置連接所用的端口②開始監(jiān)聽此端口③接到請求后建立連接④可以發(fā)送和接收數(shù)據(jù)⑤不用了就關(guān)閉Socket連接??蛻舳撕喕癁椋孩僭O(shè)置服務(wù)器地址r要連接的地址②設(shè)置連接是所用到的端口③發(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 等依然負(fù)有責(zé)任并有靈活的控制權(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)功能設(shè)計 客戶端功能程序設(shè)計首先介紹客戶端的用戶登錄窗體,輸入用戶名和服務(wù)器ip地址后進入聊天室。輸入用戶名服務(wù)器ip登陸取消圖3 客戶端登陸窗口然后出現(xiàn)圖4,客戶端聊天主窗體。消息顯示框發(fā)送消息傳輸文件(下拉框)選擇聊天對象(復(fù)選框)二人私聊圖 4功能及模塊實現(xiàn)窗口圖 4中聊天對象下拉框中,包括所有人選項和登陸某某用戶名的下拉框選項,如下圖5,所有人張三李四…圖5 選擇用戶下拉框點擊文件傳輸按鈕后,在文件傳輸對話框中會顯示相應(yīng)的傳輸文件,只要雙擊你所需要的文件,選擇相應(yīng)的存儲路徑后即可存儲文件。本實驗采用上述方式實現(xiàn)廣播聊天、聊天室聊天、二人私聊、文件傳輸四個功能 服務(wù)端程序設(shè)計啟動服務(wù)端后進入張三 **時間 進入聊天室李四 **時間 進入聊天室在線用戶:刪除退出顯示所有在線用戶,選擇某用戶后可以進行踢線操作。 本實驗采用VS 2003 為平臺利用VC++開發(fā)語言進行程序編寫。下面介紹Client端基本類:CChatSocket繼承與CSocket類,主要用于TCP/IP通訊連接CSendview類用戶顯示消息:5系統(tǒng)功能實現(xiàn)服務(wù)器端有個CSocket 的派生類CListeningSocket對象指針來監(jiān)聽端口等待用戶登陸, 而用另一個CSocket 的派生類對象CClientSocket 的指針組來處理和每一個客戶端的交互過程。派生類CListeningSocket的回調(diào)函數(shù)OnAccpet()與客戶端建立套接字層次的連接。派生類CClientSocket 的回調(diào)函數(shù)OnReceive()與接收每一個已連接的數(shù)據(jù)傳輸。啟動服務(wù)端,顯示服務(wù)端界面:圖6 用戶管理界面打開客戶端,顯示客戶端登陸界面:從名稱的下拉列表框中選擇登錄的用戶,單擊確定,進入該用戶聊天的界面,同時服務(wù)端也會顯示出該用戶的進入信息:在聊天對象中,選擇所有人,在聊天信息中,輸入信息,單擊發(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)有很多用戶進入聊天室后,在聊天對象中,選擇想要聊天的人名,勾選二人世界,在聊天信息中,輸入信息,單擊發(fā)送信息。這時信息只顯示在聊天人的客戶端中,而在其他客戶端,并不顯示該信息。文件傳輸:局域網(wǎng)內(nèi)文件分發(fā)的編程思路局域網(wǎng)內(nèi)文件分發(fā)的編程思路是, 服務(wù)器軟件和客戶端軟件使用同一個端口, 待連接以后, 客戶端給服務(wù)器發(fā)送請求, 包括待傳文件的文件名、文件大小等, 如果服務(wù)器接受, 就開始傳文件。Socket 通信在Windows 中以排隊形式由操作系統(tǒng)進行處理, 基本方式是請求和應(yīng)答, 而且接收方和發(fā)送方必須相互協(xié)同工作,否則就會造成數(shù)據(jù)丟失。因此,不能用類似于for 的循環(huán)語句來實現(xiàn)對多組數(shù)據(jù)的發(fā)送,更不能用循環(huán)語句來接收數(shù)據(jù)。 另外, 對于較大的文件, 應(yīng)該分批傳輸,一般每次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)建或打開失?。≌埓_認(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é)束語如今, 人們不僅可以在網(wǎng)上查詢自己需要的資源, 而且可以通過網(wǎng)絡(luò)進行實時的溝通, 從實時性和有效性上都超過了用信件和EMail, 并且在費用上要低于電話。因而各種聊天服務(wù)備受用戶青睞, 在這方面的開發(fā)與應(yīng)用也較多[1], 聊天服務(wù)也成為互聯(lián)網(wǎng)提供的重要服務(wù)之一?;ヂ?lián)網(wǎng)的大多數(shù)網(wǎng)站都建有聊天室, 并且有專業(yè)聊天網(wǎng)站提供聊天服務(wù)。進入20 世紀(jì)90 年代后, 隨著計算機和網(wǎng)絡(luò)技術(shù)的發(fā)展,很多數(shù)據(jù)處理系統(tǒng)都采用開放系統(tǒng)結(jié)構(gòu)的客戶機/服務(wù)器(Client/Server)網(wǎng)絡(luò)模型,即客戶機向服務(wù)器提交請求,服務(wù)器對請求做相應(yīng)的處理兵執(zhí)行被請求的任務(wù),然后將結(jié)構(gòu)返回給客戶機。這種方式隱含了在建立客戶機/服務(wù)器間通信是的非對稱性。客戶機/服務(wù)器模型工作時要求有一套為客戶機和服務(wù)器所共識的慣例來保證服務(wù)能夠被提供( 或被接受) , 這一套慣例包含了一套協(xié)議, 它必須在通信的兩頭都被實現(xiàn)。根據(jù)不同的實際情況, 協(xié)議可能是對稱的或非對稱的。在對稱的協(xié)議中每一方都有可能扮演主從角色。 在非對稱協(xié)議中一方被不可改變地認(rèn)為是主機, 而另一方則是從機。一個對稱協(xié)議地例子是Internet中用于終端仿真地Telnet, 而非對稱協(xié)議地例子是Internet 中的。無論具體的協(xié)議是對稱的或是非對稱的, 當(dāng)服務(wù)被提供時必然存在客戶進程和服務(wù)進程。一個服務(wù)程序通常在一個眾所周知地地址監(jiān)聽客戶對服務(wù)地請求, 也就是說, 服務(wù)進程一直處于休眠狀態(tài), 直到一個客戶對這個服務(wù)地址提出連接請求。在這個時刻, 服務(wù)程序被“驚醒”并且為客戶提供服務(wù) 對客戶地請求作出適當(dāng)?shù)姆磻?yīng)。本文以Visual C++的MFC(微軟基本類庫)作為基本的開發(fā)基礎(chǔ), 使用Socket 套接字作為開發(fā)的應(yīng)用程序開發(fā)模型, 完成了網(wǎng)絡(luò)在線聊天系統(tǒng)的設(shè)計及實現(xiàn)過程, 通過測試表明該系統(tǒng)可以方便的建立連接, 斷開連接, 實現(xiàn)網(wǎng)絡(luò)在線聊天系統(tǒng)的在線好友查找, 發(fā)送消息和接收消息等功能。通過本次畢業(yè)設(shè)計,我也感受到了開源的方便,遇到什么問題,上網(wǎng)一查,就知道該怎么弄了,以前做個課程設(shè)計都是怕別人和我的一樣,不愿意給別人看,現(xiàn)在知道了程序弄不出來是多么的著急,學(xué)習(xí)都是相互的,本次畢業(yè)設(shè)計是我工作前一次很好的演練和實踐的機會,是培養(yǎng)獨立思考問題和自學(xué)能力的鍛煉,使我意識到必須努力學(xué)習(xí)才能才工作中體現(xiàn)自己的價值,適應(yīng)社會的需要。7 致謝我的作品基于TCP/IP的網(wǎng)絡(luò)聊天工具的設(shè)計與實現(xiàn),達(dá)到了我預(yù)先的效果。在此我要在此衷心感謝老師的悉心指導(dǎo),在他們的接觸中,從他們一絲不茍的工作態(tài)度和平易近人的交談中,我感受到了老師們扎實的知識、對工作的責(zé)任感和積極樂觀的生活態(tài)度。我的論文的完成,離不開這位老師的指導(dǎo)與關(guān)愛。感謝在大學(xué)四年的學(xué)習(xí)生活中所有關(guān)心和幫助過我的各位老師和同學(xué)。參考文獻[1] Douglas E Comer , David L Stevens. Internet Working With TCP/ IP Vol Ⅱ:Design , Implementation and Internal [M] . 張娟,等譯. 北京:電子工業(yè)出版社,1998.[2] 李鵬. 計算機通信技術(shù)及其程序設(shè)計[M] . 西安:西安電子科技大學(xué)出版社,1998.[3] 黃超. Windows網(wǎng)絡(luò)編程[M] . 北京:人民郵電出版社,2000[4] 劉運強,王匯源1Socket 和多線程在視頻傳輸?shù)膽?yīng)用[J ] 山東大學(xué)學(xué)報(工學(xué)版) ,2004 ,34(2) :452501[5] 胡濤1Visual C + + 1NET 編程技術(shù)體驗[M]1 北京:清華大學(xué)出版社,1991[6] 蘇炳秒,黃勁 基于Socket 技術(shù)的煤礦遠(yuǎn)程監(jiān)控系統(tǒng)[J ]工礦自動化,2003 , (1) :372391[7] 袁立民 一種視頻圖像傳輸?shù)亩嗑€程實現(xiàn)方法[J] 電子技術(shù)應(yīng)用,1999 ,25(1) :492501[8] 蔣東興 Windows Sockets 網(wǎng)絡(luò)程序設(shè)計大全[M]北京:清華大學(xué)出版社,19991[9] 王騫,等 一類網(wǎng)絡(luò)控制系統(tǒng)的建模及分析[J ] 控制工程,2004 ,11(6) :52925321基于TCP/IP的網(wǎng)絡(luò)聊天工具的設(shè)計與實現(xiàn)摘要Socket 接口是TCP/ IP 網(wǎng)絡(luò)的API(應(yīng)用程序接口) ,Windows Sockets (Winsock) 是一個基于Socket 模型的API。本文通過論述了Windows 環(huán)境下的實現(xiàn)計算機數(shù)據(jù)傳輸服務(wù)的機制,提供了一種網(wǎng)絡(luò)環(huán)境下實現(xiàn)計算機通信的手段,分析了TCP/ IP 協(xié)議的體系結(jié)構(gòu)、組成與功能以及通過TCP/ IP 協(xié)議實現(xiàn)異構(gòu)型網(wǎng)絡(luò)互連的機理。對TCP/ IP 協(xié)議提供的兩種通信功能進行了分析,辯證地提出了它們不同的應(yīng)用場合。本聊天工具使用VC++語言和較成熟的微軟的mfc71作為開發(fā)語言,本文詳細(xì)介紹了本聊天工具的開發(fā)過程。并從系統(tǒng)的需求
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1