




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、聊天程序設(shè)計(jì)報(bào)告-網(wǎng)絡(luò)編程設(shè)計(jì)報(bào)告目 錄 【1】 設(shè)計(jì)原理1【2】 功能描述1【3】 詳細(xì)設(shè)計(jì)2【4】 工作進(jìn)度7【5】 設(shè)計(jì)總結(jié)8【6】 使用方法9【7】 附錄9一. 設(shè)計(jì)原理計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)發(fā)展至今已經(jīng)大大超越了人們當(dāng)初的預(yù)想,無論是人們?nèi)粘5墓ぷ鬟€是學(xué)習(xí),我們都越來越多的依靠到互聯(lián)網(wǎng)。各種實(shí)時(shí)性的聊天娛樂軟件也同時(shí)誕生,而且為我們的即時(shí)通訊帶來了眾多的方便,比如說大家所熟知的騰訊QQ、微軟的MSN、中國移動(dòng)的Fetion等,都是做的比較成功的實(shí)時(shí)聊天工具。隨著網(wǎng)絡(luò)的日益普及,各種聊天工具也層出不窮,但當(dāng)我們學(xué)習(xí)了網(wǎng)絡(luò)編程這門課程之后,我們便會(huì)覺得,其實(shí)要實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)絡(luò)通訊其實(shí)并不難。接下來
2、的課程設(shè)計(jì)就是針對(duì)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)聊天程序,利用MFC為開發(fā)工具,實(shí)現(xiàn)基本的通訊功能。此程序主要分為兩個(gè)模塊:服務(wù)線程和聊天線程。服務(wù)線程用于提供一個(gè)網(wǎng)絡(luò)端口,等待客戶線程發(fā)出請(qǐng)求,登錄到作為服務(wù)端的程序,然后進(jìn)行網(wǎng)絡(luò)通訊和消息的收發(fā);客戶端可通過服務(wù)器端的IP地址發(fā)送連接請(qǐng)求,然后建立連接,進(jìn)行通訊。整個(gè)程序的主體使用了CSocket類的方法,實(shí)現(xiàn)了網(wǎng)絡(luò)通訊聊天。二功能描述(需求分析)1、一對(duì)一會(huì)話。此程序既可以作為服務(wù)器,也可以作為客戶端。當(dāng)發(fā)起聊天請(qǐng)求時(shí)是客戶端,而當(dāng)接受連接請(qǐng)求時(shí)時(shí)服務(wù)器。通訊基于可靠的TCP連接。2、修改聯(lián)系人通訊地址。 可以根據(jù)聯(lián)系人IP地址和端口的不同建立不同的連接
3、。可以實(shí)時(shí)修改聯(lián)系人的地址。3、多線程技術(shù)。進(jìn)程啟動(dòng)時(shí)會(huì)開啟一個(gè)專門用于監(jiān)聽連接請(qǐng)求的服務(wù)進(jìn)程,線程函數(shù)為UINT threadListen(LPVOID lpParam),用來被動(dòng)接受聊天請(qǐng)求。無論是主動(dòng)發(fā)起聊天請(qǐng)求還是被動(dòng)接受連接請(qǐng)求,都將啟動(dòng)一個(gè)名為CIMTalking的線程,專門處理聊天業(yè)務(wù)。4、整個(gè)程序的主體使用了基于CSocket類的網(wǎng)絡(luò)編程方法,綜合運(yùn)用了CSocket、CSocketFile、CArchive等類的方法,實(shí)現(xiàn)了網(wǎng)絡(luò)通訊聊天。IM的功能可劃分為以下幾點(diǎn):1) 界面顯示:將在線好友顯示在好友列表中,并實(shí)現(xiàn)好友分組,便于選擇聯(lián)系人。2) 聊天功能:與好友聊天。3) 聊
4、天紀(jì)錄:能保存聊天紀(jì)錄,并能察看聊天紀(jì)錄。(未實(shí)現(xiàn))4) 信息提示:當(dāng)連接失?。ㄒ话銥閷?duì)方不在線)時(shí),提醒用戶連接失敗及原因。5) 修改聯(lián)系地址:由于本聊天程序不涉及登錄服務(wù)器,故開啟進(jìn)程即為在線,否則離線。故需要?jiǎng)討B(tài)修改聯(lián)系人IP地址及端口號(hào)。聊天處理聊天程序監(jiān)聽連接請(qǐng)求發(fā)送消息接收消息保存聊天記錄顯示聊天記錄聊天程序模塊圖三、詳細(xì)設(shè)計(jì)程序中主要變量及類的功能說明如下:CIMTalkingDlg - 聊天過程處理函數(shù)類CIMTalking - 用于處理聊天過程的運(yùn)行時(shí)類peerAddress - 聯(lián)系人地址,包括套接字地址和聯(lián)系人姓名,這是一個(gè)結(jié)構(gòu)體CIMApp - 程序主線程CIMDlg
5、- 程序UI線程,用于處理消息,界面窗口初始化等工作CChatSock - 專門用于聊天的套接字類,繼承自CSocketCAddrDlg - 顯示聯(lián)系人地址、修改聯(lián)系人地址CAboutDlg- 顯示程序版本信息聯(lián)系人地址結(jié)構(gòu)體類型:struct peerAddressstruct sockaddr_in peerAddr;/對(duì)方地址char peerName20;/對(duì)方姓名;類圖框架用Visual Studio 2008逆向工程導(dǎo)出的詳細(xì)類圖開始聊天?輸入新地址編輯聯(lián)系人地址?選擇聯(lián)系人NY等待連接請(qǐng)求有連接請(qǐng)求?N結(jié)束關(guān)閉主程序聊天結(jié)束,關(guān)閉聊天窗口開始聊天/收發(fā)消息YN發(fā)起連接請(qǐng)求程序流程
6、圖UI設(shè)計(jì)程序主界面聊天對(duì)話框界面修改聯(lián)系人地址對(duì)話框界面四工程進(jìn)度計(jì)劃進(jìn)度如下:第一階段 6月4號(hào)-6月10號(hào)分析功能要求第二階段 6月11號(hào)-6月12號(hào)分析模型、設(shè)計(jì)模型、詳細(xì)設(shè)計(jì)第三階段 6月13號(hào) 開始編碼實(shí)現(xiàn)程序并開始進(jìn)行文檔編寫五、設(shè)計(jì)總結(jié)41 程序的應(yīng)改進(jìn)之處:1、無法知道聯(lián)系人是否在線,除非連接;而且若把聯(lián)系人的套接字地址,即IP地址和端口搞錯(cuò),通訊失敗。即使對(duì)方在線,也有可能出錯(cuò);這是本程序最大的缺憾。2、被連接時(shí)自動(dòng)啟動(dòng)窗口,表示對(duì)方已經(jīng)發(fā)起聊天請(qǐng)求,可以改為發(fā)送第一條消息后自動(dòng)彈出聊天窗口。3、聊天記錄文件應(yīng)該加密,雖然在本程序中沒有實(shí)現(xiàn)。4、可以在程序啟動(dòng)后立即 探測(cè)聯(lián)
7、系人的狀態(tài),并在用戶界面上顯示其狀態(tài),即是否在線。42個(gè)人小結(jié)1、 在做這次網(wǎng)絡(luò)創(chuàng)新實(shí)驗(yàn)之前基本上還沒接觸過MFC套接字網(wǎng)絡(luò)編程,這次實(shí)驗(yàn)是在邊學(xué)習(xí)邊實(shí)踐的基礎(chǔ)上完成的。由于臨近考試,因此做的時(shí)間不多,做的結(jié)果不太好,與自己原來的設(shè)想還有點(diǎn)差距。2、 通過“計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)”自己對(duì)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)也打下了很好的基礎(chǔ)。這次網(wǎng)絡(luò)實(shí)驗(yàn)可以說是在理解網(wǎng)絡(luò)的基礎(chǔ)上對(duì)Windows Socket 編程的一次學(xué)習(xí)過程,雖然做的不好,但也學(xué)到了很多知識(shí),對(duì)自己以后進(jìn)行網(wǎng)絡(luò)開發(fā)有很大的幫助。3、 在做本次實(shí)驗(yàn)時(shí),我盡可能的將上一學(xué)期學(xué)的軟件工程思想運(yùn)用到這次開發(fā)實(shí)驗(yàn)中來。在進(jìn)行詳細(xì)設(shè)計(jì)之前,先進(jìn)行需求功能分析,在功
8、能分析的基礎(chǔ)上,劃分程序的框架,創(chuàng)建類來分擔(dān)不同的功能,并根據(jù)類的功能加入函數(shù)和變量,這對(duì)詳細(xì)設(shè)計(jì)有一個(gè)總綱的作用。4、 在開始這個(gè)設(shè)計(jì)之前,對(duì)MFC編程(大一開設(shè)的半學(xué)期課程)只是初步了解,沒有掌握MFC編程的原理。通過本次設(shè)計(jì),對(duì)MFC的機(jī)制乃至Windows程序的運(yùn)行機(jī)制加深了了解,同時(shí)基本掌握了MFC編程方法,這是本次設(shè)計(jì)最大的收獲之一!5、 一些東西貌似很簡(jiǎn)單,但在實(shí)現(xiàn)時(shí)往往遇到意想不到的困難。比如本次設(shè)計(jì)中,由于缺乏編程經(jīng)驗(yàn),加入如何開啟一個(gè)新的線程,與控制臺(tái)程序就有很大不同,雖然思想相同; 再比如一些控件的使用方法, 比如右擊一個(gè)樹形控件子項(xiàng)目,如何獲取其text,就是一個(gè)問題,
9、費(fèi)了很大力氣才發(fā)現(xiàn)少了如下語句:ScreenToClient(&myPoint);/該函數(shù)把屏幕上指定點(diǎn)的屏幕坐標(biāo)轉(zhuǎn)換成用戶坐標(biāo)然后再執(zhí)行m_hTreeItem = m_friends.HitTest(myPoint, &uFlags);/獲取選取的項(xiàng)目的控件句柄6、 第一次在本次設(shè)計(jì)中用到了C+關(guān)鍵字 extern ;第一次在MFC程序中用到了全局變量;第一次在程序中使用MFC多線程函數(shù)AfxBeginThread();第一次試用了CTreeCtrl等控件;第一次實(shí)現(xiàn)了CSocket、CSocketFile、CArchive類的聯(lián)合使用以實(shí)現(xiàn)消息的發(fā)送和接收;對(duì)MFC套接字實(shí)現(xiàn)消息收發(fā)的原理有了較深的了解??偨Y(jié):動(dòng)手是提高的最佳手段!雖然過程中會(huì)遇到很多令人沮喪的問題,但解決這些問題之后是一種強(qiáng)烈的成就感!6、 使用方法要進(jìn)行通信,需要編譯兩個(gè)不同程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 抗過敏藥的3大關(guān)鍵點(diǎn)
- 學(xué)校病事假管理制度
- 學(xué)校足球組管理制度
- 學(xué)生返鄉(xiāng)后管理制度
- 完善與優(yōu)化管理制度
- 定置目視化管理制度
- 實(shí)訓(xùn)室柴油管理制度
- 審車站員工管理制度
- 客運(yùn)危險(xiǎn)源管理制度
- 家樂福存貨管理制度
- 外研版高一英語必修一重點(diǎn)總結(jié)
- 腰椎間盤突出癥的診斷、鑒別診斷與分型
- 02 微電子制造裝備概述
- 價(jià)值流圖析VSM(美的資料)
- 手足口病培訓(xùn)課件(ppt)
- LD型單梁起重機(jī)使用說明書
- 測(cè)試案例附錄DTX1800使用
- 實(shí)習(xí)生推薦信
- 關(guān)于德國能源轉(zhuǎn)型的十二個(gè)見解
- 內(nèi)蒙古自治區(qū)公路工程施工企業(yè)信用評(píng)價(jià)管理實(shí)施細(xì)則
- 在全市文物保護(hù)員培訓(xùn)班上的講話
評(píng)論
0/150
提交評(píng)論