为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

网络聊天程序设计

2017-09-26 17页 doc 204KB 94阅读

用户头像

is_531654

暂无简介

举报
网络聊天程序设计网络聊天程序设计 程序设计实践训练课程设计报告 姓 名: 班 级: 学 号: 指导老师: 日期: 1 摘 要 自我们生活中有很多软件,可是你对它了解多少呢,现在那些什么QQ、MSN之类的聊天程序已经很常见了,不要觉得它们好像很深奥一样,实际上你只要懂得它的基本原理,你就可以很好的把握它。VC作为一个常用的编程工具,它功能的强大毋庸置疑,而且微软把它的操作界面做的很友好,把它作为我们的编程的工具不失为一个很好的方案;VC的实际编程要融入多种技术例如:网络技术、数据库技术、串口技术等,还有框架的理解也很重要,而我...
网络聊天程序设计
网络聊天程序 程序设计实践训练课程设计 姓 名: 班 级: 学 号: 指导老师: 日期: 1 摘 要 自我们生活中有很多软件,可是你对它了解多少呢,现在那些什么QQ、MSN之类的聊天程序已经很常见了,不要觉得它们好像很深奥一样,实际上你只要懂得它的基本原理,你就可以很好的把握它。VC作为一个常用的编程工具,它功能的强大毋庸置疑,而且微软把它的操作界面做的很友好,把它作为我们的编程的工具不失为一个很好的;VC的实际编程要融入多种技术例如:网络技术、数据库技术、串口技术等,还有框架的理解也很重要,而我们所做的聊天软件是在对话框中加入网络技术。聊天软件有很多种,不过这些程序一般由两大部分组成:服务器聊天程序和客户端聊天程序。当然若软件较小或用于实验,你也可把客户端与服务器连在一起。这次实践可以让我们更加了解编程理念,使我们熟悉编程思维还有网络技术的实际运用…… i 目 录 1 方案比较与选择 ????????????????????????????????????????????????????????????????????????????????????????????????? 1 1.1 方案比较 ??????????????????????????????????????????????????????????????????????????????????????????????????? 1 1.2 方案选择 ??????????????????????????????????????????????????????????????????????????????????????????????????? 1 2 工具选择与功能实现 ????????????????????????????????????????????????????????????????????????????????????????? 2 2.1 工具选择与相关介绍 ???????????????????????????????????????????????????????????????????????????????? 2 2.2 功能实现 ??????????????????????????????????????????????????????????????????????????????????????????????????? 3 2.3 方案系统框图 ??????????????????????????????????????????????????????????????????????????????????????????? 8 3 程序的设计与分析 ????????????????????????????????????????????????????????????????????????????????????????????? 9 3.1 基本类的建立 ??????????????????????????????????????????????????????????????????????????????????????????? 9 3.2 分析与添加功能 ??????????????????????????????????????????????????????????????????????????????????????? 9 3.3 一些添加的代码 ??????????????????????????????????????????????????????????????????????????????????????? 9 4讨论及进一步研究建议 ???????????????????????????????????????????????????????????????????????????????????? 12 5课程设计心得 ???????????????????????????????????????????????????????????????????????????????????????????????????? 12 Abstract ????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 13 参考文献 ?????????????????????????????????????????????????????????????????????????????????????????????????????????????? 14 I 1(方案比较与选择 1.1方案比较 方案一: 将服务器与客户端都放在一个程序里。 优点: 简单、便易,只用一个软件就可以实现服务器与客户端的功能,不用考虑服务器 与客户端之间的接口,因为它们本来就连接在一起,而且操作也很简便,编程时也省 去很多功夫,有好些程序可以共用。 缺点: 首先较占用资源,如果只使用服务器或客户端时,有好很多资源是没有利用到的; 还有当出现问题时,要维护也比较困难,因为你要找出问题的所在,可是这个程序是 服务器与客户端都在一起的。 方案二: 将服务器与客户端分成两个程序。 优点: 维护时比较容易,可以很快找出到底是服务器还是客户端出了问题,特别是程序 较大时,这更显重要,还有可以节省一些不必要的资源浪费,你只要知道一种程序的 原理就可以编写与维护程序了。也可以用于技术的保密,服务器往往比客户端要复杂 的多。 缺点: 在运用过程中可能会比较麻烦,若程序较小,编成两个也没有什么必要;而且独 立编写好程序时还要考虑两者直间的接口问题,在实际运用中这往往是个不可忽视的 问题。 1.2方案选择: 两个方案我们都去尝试实现,应为没有所谓的好坏,在某些情况下可能是第一种好些,但是在另为一些情况下可能就第二种好些。 1 2.工具选择与所要实现的功能 2.1工具选择与相关介绍: 使用VC编程,采用的是其中的MFC,Visual C++由微软的基本类型库(Microsoft Foundation Class library)所支持。MFC类是一组预先定义的C++。应用程序向导通过创建和继承MFC库的基本类以及派生出的新类生成一个应用软件。因为用VC编程很方便,有很多类是可以继承调用的,不用全都自己编写,对于我们这些初学者来说是一个很不错的选择。 Visual C++: Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Visual C++它大概可以分成三个主要的部分: Developer Studio、MFC、Platform SDK。 MFC介绍: MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinDOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Delphi的关系一个道理,Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的. 2 2.2功能实现: 客户端部分: , 手动输入服务器端IP地址和端口号进行连接 , 发送消息给服务器端并显示服务器端回传的消息 服务器端部分: , 手动建立服务器端与客户端的连接请求 , 接收所有用户发送的消息 , 向所有在线用户群发消息 附加功能 , 在客户端和服务器端分别增加保存聊天记录的功能 相关截图: 图表 1 类的建立 3 图表 2 对话框的编辑 图表 3 图标 4 图表 4 代码列表 图表 5 启动界面与建立服务器 5 图表 6 客户端建立 图表 7 聊天效果 6 图表 8 服务器端保存的聊天的记录 图表 9 客户端保存的聊天的记录 7 2.3方案系统框图: 服务器客户端取得TCP套接字取得TCP套接字 Socket()Socket()填入本地IP和PORT信填入远端IP和PORT信 息 息本地信息和套接字绑 定bind() 设置最大连接数 Listen() 等待远端连接取得新尝试与远端连接取得 的套接字新的套接字Accept()Connect() YN子进程,子进程 接受采集数据 与客户端数据传输 等待并传输数据 N Exit? Exit? N父进程 Y删除套接字Close()Y 删除套接字 Close() 等待并清除任意子进 程Waitpid() 结束 8 3程序设计与分析 3.1基本类的建立: 建立3个类"CMessg"、"CClientSocket"、"CServerSocket"分别实现数据串行化,客户端的建立与功能实现、服务器的初始化与功能实现;还要给"ChatDlg "添加相应的函数用于调用上面的三个类以实现所需的功能。基本功能在2.2的图片中可已得到体现。 3.2分析与添加功能: 这个聊天软件,除了基本功能的实现,我们还添加了相应的功能,例如:可以看到发送的时间、可以再IDC_SHOWTEXT框里面区分服务器还是客户端、增加了保存的聊天记录的功能、游客进入时也会被保存(进入时间也会存下来并显示游客昵称)、设置了自己的用户的图形界面、添加了最小化功能、按回车键发送、图标设置。 3.3一些添加的代码: 获取时间函数: CTime tRecordTime = CTime::GetCurrentTime(); m_sMsgList2 =tRecordTime.Format("%Y-%m-%d %H:%M:%S");//获取记录时间用于显示 聊天记录存储实现(发送接收端都要添加): FILE* fp; CString str_name12; str_name12 = str_name + "的聊天记录.txt"; fp = fopen(str_name12,"a+"); //打开当前文件目录“某某某的聊天记录.txt”,没有则新建 int len=m_sMsgList3.GetLength(); char *buffer=new char[len+1]; //缓冲存储 if(!buffer) { } else { 9 strcpy(buffer,m_sMsgList3); buffer[len]='\0'; fprintf(fp,"%s",buffer); //写入“聊天记录.txt”中 delete buffer; } fclose(fp); 区分服务器与客户端的标记: if(m&&(!m_bClient)) { m=false; m_sMsgList+="服务器\r\n"; } 添加背景图片相关代码: //CDialog::OnPaint(); //要禁止这个调用 CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是你自己的图对应的ID BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); 游客进入聊天室时显示进入时间: CTime tRecordTime = CTime::GetCurrentTime(); 10 m_sMsgList+="一个游客进入聊天室了("+tRecordTime.Format("%Y-%m-%d %H:%M:%S") +")\r\n"; //服务器中的显示 msg.m_strText="一个游客进入聊天室了("+tRecordTime.Format ("%Y-%m-%d %H:%M:%S")+")"; //其它客户端的显示(除刚进的那个游客) SetDlgItemText(IDC_SHOWTEXT,m_sMsgList); 游客进入使显示他的昵称: CString str_name; CMessg msg; CTime tRecordTime = CTime::GetCurrentTime(); GetDlgItemText(IDC_NAME,str_name); str_name+="进入聊天室了("+tRecordTime.Format("%Y-%m-%d %H:%M:%S")+")"; msg.m_strText=str_name; m_clientsocket.SendMessage(&msg); 添加IDOK与其函数,用于回车发送: void CChatDlg::OnOK() { // TODO: Add extra validation here CChatDlg::OnBnClickedButton1(); // CDialog::OnOK(); } 11 4. 讨论及进一步研究建议 这个聊天程序还有所欠缺,它没有QQ、MSN之类的聊天软件的功能那么多,不能传送文件、不能发送表情、没有离线消息、基本没有应用到数据库的功能、还没添加窗口震动等一些功能…… 做了一些功能上的完善如:时间显示、服务器与客户端的区分、存储聊天记录、添加程序的背景图片、按回车键发送、图标设置…… 由于时间的限制,我们仅仅添加了几个功能,而且还不是很完善,不过对于我们第一次编写MFC程序的初学者来说这已是一个很大的进步了,但是这并不能作为我们借口,我们要做的实在太多了,最主要是学会运用VC编程来解决实际的问题,前面的路还很长…… 5.课程设计心得 本次程序设计实习,让我们对于编程的涵义有了更深的理解,对于我们的帮助也具有深远的意义。VC的程序编写、MFC的首次尝试使用、一个实用软件的编写、网络协议的添加;无疑加深了我们C语言知识结构的认知和对于网络连接的方式,而且自信心也大大的增强了,因为这是个我们自己编写出来的软件,看到自己的劳动成果与知识的结晶会很开心,对于以后的学习也会很有帮助的。 12 The preparation of chat program Abstract Since we live there are many software, but you know it how much? Now that what the QQ, MSN-like chat program has been very common, and do not think they like the sounds profound, in fact as long as you understand its basic principles, you can grasp it well. VC, as a common programming tool that features a powerful no doubt, but Microsoft is doing its interface is very friendly, put it as our programming tools would be a good program; VC more than the actual programming to integrate into the kinds of technology, such as: network technology, database technology, serial technology, as well as the understanding of the framework is also very important, The chat software is what we have done in the dialog box to add network technology. There are a variety of chat software, but these procedures are generally composed of two parts: a server and client chat program chat program. Of course, if the software or use a smaller experiment, you can also put the client and server together. This practice allows us to better understand the programming concepts, so that we are familiar with programming ideas are the practical application of network technologies ... ... 13 参考文献 1.Jon Bates,Tim Tompkins.实用Visual C++ 6.0[M].北京:清华大学出版社,2000.8 2.邓华,吉正,毛杰. Visual C++案例[M].北京:中国多媒体电子出版社,2001.8 3.常晋义,沈建,徐文彬. Visual C++程序设计简明教程[M]. 北京:中国电力出版社,2002.9 4.陈坚,陈伟. Visual C++网络高级编程[M]. 北京:人民邮电出版社,2001.8 14
/
本文档为【网络聊天程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索