基于MFC的聊天程序的设计说明

上传人:l**** 文档编号:134431457 上传时间:2020-06-05 格式:DOC 页数:9 大小:196KB
返回 下载 相关 举报
基于MFC的聊天程序的设计说明_第1页
第1页 / 共9页
基于MFC的聊天程序的设计说明_第2页
第2页 / 共9页
基于MFC的聊天程序的设计说明_第3页
第3页 / 共9页
基于MFC的聊天程序的设计说明_第4页
第4页 / 共9页
基于MFC的聊天程序的设计说明_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《基于MFC的聊天程序的设计说明》由会员分享,可在线阅读,更多相关《基于MFC的聊天程序的设计说明(9页珍藏版)》请在金锄头文库上搜索。

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发起连接请求程序流程图UI设

6、计程序主界面聊天对话框界面修改联系人地址对话框界面四工程进度计划进度如下:第一阶段 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、 使用方法要进行通信,需要编译两个不同程序,但只要交换void CIMDlg:OnDblclkFriend(NMHDR* pNMHDR, LRESULT* pResult)和UINT threadListen(LPVOID lpParam)函数中的端口号即可,编译生成可执行文件后即可通过双击好友收发消息。7、 附录程序代码见附件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号