




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