基于MFC的聊天程序的设计说明[文摘][整理]

上传人:粗**** 文档编号:140302416 上传时间:2020-07-28 格式:PDF 页数:9 大小:357.60KB
返回 下载 相关 举报
基于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、修改联系

3、人通讯地址。可以根据联系人IP 地址和端口的不同建立不同 的连接。可以实时修改联系人的地址。 3、多线程技术。进程启动时会开启一个专门用于监听连接请求的服务进程, 线程函数为 UINT threadListen(LPVOID lpParam) ,用来被动接受聊天请求。无论 是主动发起聊天请求还是被动接受连接请求,都将启动一个名为CIMTalking 的 线程,专门处理聊天业务。 4、整个程序的主体使用了基于CSocket 类的网络编程方法,综合运用了 CSocket、CSocketFile、CArchive 等类的方法,实现了网络通讯聊天。 IM 的功能可划分为以下几点: 1) 界面显示:将在

4、线好友显示在好友列表中,并实现好友分组,便于选择联系 人。 2) 聊天功能:与好友聊天。 3) 聊天纪录:能保存聊天纪录,并能察看聊天纪录。(未实现) 4) 信息提示:当连接失败(一般为对方不在线) 时,提醒用户连接失败及原因。 5) 修改联系地址:由于本聊天程序不涉及登录服务器,故开启进程即为在线, 否则离线。故需要动态修改联系人IP 地址及端口号。 聊天程序模块图 聊天处理 聊天程序 监听连接请求 发 送 消 息 接 收 消 息 保 存 聊 天 记 录 显 示 聊 天 记 录 三、详细设计 程序中主要变量及类的功能说明如下: CIMTalkingDlg - 聊天过程处理函数类 CIMTal

5、king - 用于处理聊天过程的运行时类 peerAddress - 联系人地址,包括套接字地址和联系人,这是一个结构体 CIMApp - 程序主线程 CIMDlg - 程序 UI 线程,用于处理消息,界面窗口初始化等工作 CChatSock - 专门用于聊天的套接字类,继承自CSocket CAddrDlg - 显示联系人地址、修改联系人地址 CAboutDlg- 显示程序版本信息 联系人地址结构体类型: struct peerAddress struct sockaddr_in peerAddr; / 对方地址 char peerName20; / 对方 ; 类图框架 用 Visual S

6、tudio 2008逆向工程导出的详细类图 N Y N Y N 程序流程图 等待连接请求 选择联系人 编辑联系人 地址? 输入新地址 发起连接请求 有连接请 求? 开始聊天 /收发消息 聊天结束,关闭聊天窗口 关闭主程序 结束 开始 聊天? UI 设计 程序主界面 聊天对话框界面 修改联系人地址对话框界面 四工程进度 计划进度如下: 第一阶段6 月 4 号-6 月 10 号分析功能要求 第二阶段6 月 11号-6 月 12 号分析模型、设计模型、详细设计 第三阶段6 月 13号 开始编码实现程序并开始进行文档编写 五、设计总结 41 程序的应改进之处: 1、无法知道联系人是否在线,除非连接;而

7、且若把联系人的套接字地址,即IP 地址和端口搞错,通讯失败。即使对方在线,也有可能出错;这是本程序最大的 缺憾。 2、被连接时自动启动窗口,表示对方已经发起聊天请求,可以改为发送第一条 消息后自动弹出聊天窗口。 3、聊天记录文件应该加密,虽然在本程序中没有实现。 4、可以在程序启动后立即探测联系人的状态, 并在用户界面上显示其状态,即 是否在线。 42 个人小结 1、在做这次网络创新实验之前基本上还没接触过MFC 套接字网络编程,这次 实验是在边学习边实践的基础上完成的。由于临近考试, 因此做的时间不多, 做 的结果不太好,与自己原来的设想还有点差距。 2、通过“计算机网络基础”自己对网络的基

8、础知识也打下了很好的基础。这次 网络实验可以说是在理解网络的基础上对Windows Socket 编程的一次学习过 程,虽然做的不好, 但也学到了很多知识, 对自己以后进行网络开发有很大的帮 助。 3、在做本次实验时,我尽可能的将上一学期学的软件工程思想运用到这次开发 实验中来。在进行详细设计之前,先进行需求功能分析,在功能分析的基础上, 划分程序的框架,创建类来分担不同的功能,并根据类的功能加入函数和变量, 这对详细设计有一个总纲的作用。 4、在开始这个设计之前,对MFC 编程(大一开设的半学期课程)只是初步了 解,没有掌握 MFC 编程的原理。通过本次设计,对MFC 的机制乃至 Windo

9、ws 程序的运行机制加深了了解,同时基本掌握了MFC 编程方法,这是本次设计最 大的收获之一! 5、一些东西貌似很简单,但在实现时往往遇到意想不到的困难。比如本次设计 中,由于缺乏编程经验, 加入如何开启一个新的线程,与控制台程序就有很大不 同,虽然思想相同;再比如一些控件的使用方法,比如右击一个树形控件子项 目,如何获取其 text,就是一个问题,费了很大力气才发现少了如下语句: ScreenToClient(/该函数把屏幕上指定点的屏幕坐标转换成用户坐标 然后再执行 m_hTreeItem = m_friends.HitTest(myPoint, /获取选取的项目的控件句柄 6、第一次在本

10、次设计中用到了C+关键字 extern ;第一次在 MFC 程序中用到 了全局变量;第一次在程序中使用MFC 多线程函数 AfxBeginThread();第一次 试用了 CTreeCtrl 等控件;第一次实现了CSocket、CSocketFile、CArchive 类的 联合使用以实现消息的发送和接收;对MFC 套接字实现消息收发的原理有了较 深的了解。 。总结:动手是提高的最佳手段! 虽然过程中会遇到很多令人沮丧的 问题,但解决这些问题之后是一种强烈的成就感! 六、使用方法 要进行通信,需要编译两个不同程序,但只要交换void CIMDlg:OnDblclkFriend(NMHDR* pNMHDR, LRESULT* pResult)和 UINT threadListen(LPVOID lpParam) 函数中的端口号即可,编译生成可执行文件 后即可通过双击好友收发消息。 七、附录 程序代码见附件

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

当前位置:首页 > 大杂烩/其它

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