电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

9页
  • 卖家[上传人]:l****
  • 文档编号:134431457
  • 上传时间:2020-06-05
  • 文档格式:DOC
  • 文档大小:196KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、聊天程序设计报告-网络编程设计报告目 录 【1】 设计原理1【2】 功能描述1【3】 详细设计2【4】 工作进度7【5】 设计总结8【6】 使用方法9【7】 附录9一. 设计原理计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、中国移动的Fetion等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷,但当我们学习了网络编程这门课程之后,我们便会觉得,其实要实现简单的网络通讯其实并不难。接下来的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。此程序主要分为两个模块:服务线程和聊天线程。服务线程用于提供一个网络端口,等待客户线程发出请求,登录到作为服务端的程序,然后进行网络通讯和消息的收发;客户端可通过服务器端的IP地址发送连接请求,然后建立连接,进行通讯。整个程序的主体使用了CSocket类的方法,实现了网络通讯聊天。二功能描述(需求分析)1、一对一会

      2、话。此程序既可以作为服务器,也可以作为客户端。当发起聊天请求时是客户端,而当接受连接请求时时服务器。通讯基于可靠的TCP连接。2、修改联系人通讯地址。 可以根据联系人IP地址和端口的不同建立不同的连接。可以实时修改联系人的地址。3、多线程技术。进程启动时会开启一个专门用于监听连接请求的服务进程,线程函数为UINT threadListen(LPVOID lpParam),用来被动接受聊天请求。无论是主动发起聊天请求还是被动接受连接请求,都将启动一个名为CIMTalking的线程,专门处理聊天业务。4、整个程序的主体使用了基于CSocket类的网络编程方法,综合运用了CSocket、CSocketFile、CArchive等类的方法,实现了网络通讯聊天。IM的功能可划分为以下几点:1) 界面显示:将在线好友显示在好友列表中,并实现好友分组,便于选择联系人。2) 聊天功能:与好友聊天。3) 聊天纪录:能保存聊天纪录,并能察看聊天纪录。(未实现)4) 信息提示:当连接失败(一般为对方不在线)时,提醒用户连接失败及原因。5) 修改联系地址:由于本聊天程序不涉及登录服务器,故开启进程即为在线,否

      3、则离线。故需要动态修改联系人IP地址及端口号。聊天处理聊天程序监听连接请求发送消息接收消息保存聊天记录显示聊天记录聊天程序模块图三、详细设计程序中主要变量及类的功能说明如下:CIMTalkingDlg - 聊天过程处理函数类CIMTalking - 用于处理聊天过程的运行时类peerAddress - 联系人地址,包括套接字地址和联系人,这是一个结构体CIMApp - 程序主线程CIMDlg - 程序UI线程,用于处理消息,界面窗口初始化等工作CChatSock - 专门用于聊天的套接字类,继承自CSocketCAddrDlg - 显示联系人地址、修改联系人地址CAboutDlg- 显示程序版本信息联系人地址结构体类型:struct peerAddressstruct sockaddr_in peerAddr;/对方地址char peerName20;/对方;类图框架用Visual Studio 2008逆向工程导出的详细类图开始聊天?输入新地址编辑联系人地址?选择联系人NY等待连接请求有连接请求?N结束关闭主程序聊天结束,关闭聊天窗口开始聊天/收发消息YN发起连接请求程序流程图UI设

      4、计程序主界面聊天对话框界面修改联系人地址对话框界面四工程进度计划进度如下:第一阶段 6月4号-6月10号分析功能要求第二阶段 6月11号-6月12号分析模型、设计模型、详细设计第三阶段 6月13号 开始编码实现程序并开始进行文档编写五、设计总结41 程序的应改进之处:1、无法知道联系人是否在线,除非连接;而且若把联系人的套接字地址,即IP地址和端口搞错,通讯失败。即使对方在线,也有可能出错;这是本程序最大的缺憾。2、被连接时自动启动窗口,表示对方已经发起聊天请求,可以改为发送第一条消息后自动弹出聊天窗口。3、聊天记录文件应该加密,虽然在本程序中没有实现。4、可以在程序启动后立即 探测联系人的状态,并在用户界面上显示其状态,即是否在线。42个人小结1、 在做这次网络创新实验之前基本上还没接触过MFC套接字网络编程,这次实验是在边学习边实践的基础上完成的。由于临近考试,因此做的时间不多,做的结果不太好,与自己原来的设想还有点差距。2、 通过“计算机网络基础”自己对网络的基础知识也打下了很好的基础。这次网络实验可以说是在理解网络的基础上对Windows Socket 编程的一次学习过程,虽然

      5、做的不好,但也学到了很多知识,对自己以后进行网络开发有很大的帮助。3、 在做本次实验时,我尽可能的将上一学期学的软件工程思想运用到这次开发实验中来。在进行详细设计之前,先进行需求功能分析,在功能分析的基础上,划分程序的框架,创建类来分担不同的功能,并根据类的功能加入函数和变量,这对详细设计有一个总纲的作用。4、 在开始这个设计之前,对MFC编程(大一开设的半学期课程)只是初步了解,没有掌握MFC编程的原理。通过本次设计,对MFC的机制乃至Windows程序的运行机制加深了了解,同时基本掌握了MFC编程方法,这是本次设计最大的收获之一!5、 一些东西貌似很简单,但在实现时往往遇到意想不到的困难。比如本次设计中,由于缺乏编程经验,加入如何开启一个新的线程,与控制台程序就有很大不同,虽然思想相同; 再比如一些控件的使用方法, 比如右击一个树形控件子项目,如何获取其text,就是一个问题,费了很大力气才发现少了如下语句: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、 附录程序代码见附件

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

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.