基于MFC的简易聊天室Word格式.docx
- 文档编号:13076726
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:21
- 大小:202.90KB
基于MFC的简易聊天室Word格式.docx
《基于MFC的简易聊天室Word格式.docx》由会员分享,可在线阅读,更多相关《基于MFC的简易聊天室Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:
学校有权保留送
交论文的复印件,允许论文被查阅和借阅;
学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。
导师签名:
日期:
目录
1需求分析 1
1.1聊天室程序的开发背景 1
1.2聊天室的设计目标 1
1.3聊天室的实现思想 2
1.4聊天室的工作流程 2
2相关知识 3
2.1WINSOCK介绍 3
2.2MFC简介 3
2.3CDIALOG类 4
2.4CASYNCSOCKET类和CSOCKET类 5
2.5利用CSOCKET进行有连接的通信 6
3详细设计 6
3.1客户端的实现 6
3.2服务端的实现 11
4程序运行结果 16
4.1服务器端 16
4.2客户端 16
5结束语 17
6致谢 17
参考文献 17
王伟
(安阳师范学院计算机与信息工程学院,河南 安阳 455002)
摘 要:
网络聊天室,其实质就是基于Internet的一种网络聊天软件。
它可以在网络环境下进行实时的一对多或多对多的匿名交谈。
网络聊天室软件的制作方法有很多种,比如用MFC和Java等语言设计的就有很多,本毕业设计主要是利用MFC所提供的各种控件尤其是
WinSock控件,基于C/S模式,设计了一个网络聊天室,圆满地实现在网络上实时聊天的功能。
关键词:
WinSock;
C/S;
VisualC++6.0;
聊天
1需求分析
当前是数字信息时代,网络时代,任何一种编辑工具都不能忽视在网络上的应用,并且随着Internet的普及和宽带技术的成熟,越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效,与此同时一个新型的Web应用程序为网民之间提供了一个实时通信的功能和场所,这就是聊天室。
在网络早期就开始盛行,不论是BBS,IRC都有类似网上聊天室的机制。
聊天室为网友提供了实时性对话的渠道,是网络上极为流行的一项服务。
聊天室适用于网上会议或闲聊的一些场合。
聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返的时间,这也是网上交友之所以如此热门的原因。
1.1聊天室程序的开发背景
近年来,互连网发展日新月异,网络使空间的距离不再成为人们沟通的障碍,世界各个角落的人们可以通过Internet收发邮件、实时聊天、获取最新的资讯。
因此本次毕业设计以“面向连接的Winsock网络会话程序开发”为题,制作一个C/S聊天室程序,通过制作该程序还能更好的学习网络socket编程的相关知识。
1.2聊天室的设计目标
本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端,主要功能为:
服务器端功能:
(1)初始化socket,创建服务器端。
(2)维护一个链表,保存所有用户的IP地址、端口信息。
(3)接受用户传送来的聊天信息,然后向链表中的所用用户转发。
(4)接受用户传送来的连接判断命令,并向用户发出响应命令。
客户端功能:
客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。
当按下“发送”按钮时将信息发送给服务器。
通过本课题的毕业设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊
第18页
成功
天通信程序的设计方法。
并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。
1.3聊天室的实现思想
聊天室程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序连接到服务器。
就可以与同一服务器上的用户交谈,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
1.4聊天室的工作流程
(1)服务器端工作流程:
服务器端通过socket()系统调用创建一个Socket数组后
(即设定了接受客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行监听listen()。
如果有客户端连接请求,则在数组中选择一个空Socket,将可与端地址付给这个Socket。
然后登客户端的用户就可以在服务器上聊天了。
如图1:
初始化
绑定端口
发送或接受
连接请求
失败
接受请求
监听
图1服务器端流程图
(2)客户端工作流程。
客户端程序相对简单,只需要建立一个Socket与服务器连接,成功后通过这个Socket来发送和接收数据就可以了。
如图2:
开始聊天
发送请求
绑定端口和服务器IP
图2客户端流程
2相关知识
2.1Winsock介绍
WindowsSockets规范以U.C.Berkeley大学BSDUNIX中流行的Socket接口为范例定义了一套MicosoftWindows下网络编程接口。
它不仅包含了人们所熟悉的Berkeley
Socket风格的库函数;
也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。
WindowsSockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。
此外,在一个特定版本Windows的基础上,WindowsSockets也定义了一个二进制接口(ABI),以此来保证应用WindowsSocketsAPI的应用程序能够在任何网络软件供应商的符合WindowsSockets协议的实现上工作。
因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。
遵守这套WindowsSockets规范的网络软件,我们称之为WindowsSockets兼容的,而WindowsSockets兼容实现的提供者,我们称之为WindowsSockets提供者。
一个网络软件供应商必须百分之百地实现WindowsSockets规范才能做到现WindowsSockets兼容。
任何能够与WindowsSockets兼容实现协同工作的应用程序就被认为是具有Windows
Sockets接口。
我们称这种应用程序为WindowsSockets应用程序。
WindowsSockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的WindowsSockets实现都支持流套接口和数据报套接口。
应用程序调用WindowsSockets的API实现相互之间的通讯。
WindowsSockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。
虽然我们并不反对使用这一套API来实现另一通讯协议栈(而且我们期望在将来规范的修改中能够讨论这个问题),但这种用法已经超出了我们这一份规范所规定的范围,我们在此将不作讨论。
2.2MFC简介
MFC(MicrosoftFoundationClasses),是一个微软公司提供的类库(classlibraries),以
C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows句柄封装类和很多Windows的内建控
件和组件的封装类。
MFC是WinAPI与C++的结合,API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在
Windows下运行.这种结合一方面让用户使用微软的专业C++SDK来进行Windows下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Windows下用C++&
MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的。
2.3Cdialog类
CDialog类是在屏幕上显示的对话框基类。
对话框有两类:
模态对话框和非模态对话框。
模态对话框在应用继续进行之前必须关闭。
非模态对话框允许用户执行另外的操作而不必取消或删除该对话框。
一个CDialog对象是对话框模板与一个CDialog派生类的组合。
使用对话框编辑器创建对话框并存入资源之中,然后使用 ClassWizard创建一个CDialog派生类。
同其它窗口一样,对话框从Windows中获取信息。
在对话框中你会对来自对话框控件的处理消息感兴趣,因为它说明了对话框是如何与用户交互的。
ClassWizard观察对话框每个控件可能产生的消息,可以选择你所希望处理的消息。
ClassWizard将适当的消息映射器入口和消息处理成员函数加到一个新类中。
你只需为成员函数编写应用的代码。
如果喜欢,在使用ClassWizard时可以编写自己的消息映射器入口和成员函数。
对于大多数普通对话框,可以向对话框派生类中添加成员变量以存储数据。
数据
是用户向对话框中输入的,或者为用户显示数据。
ClassWizard观察对话框中与数据映射的控件并提示为每一控件创建一个成员变量。
同时,为每一变量选择变量类型和取值范围。
ClassWizard将成员变量加入对话框派生类中[3]。
然后,ClassWizard写入成员函数与对话框控件之间的交换数据自动映射的数据。
数据映射使函数可以为对话框控件提供适当的初始值。
检索数据并对数据进行有效性检测。
要建立模态对话框,先使用构造程序为对话框派生类构造一个对象。
然后调用
DoModal创建对话框窗口及其控件。
如果要建立非模态对话框,在构造程序中为对话框类调用Create即可。
还可使用DLGTEMPLATE数据结构在内存中建立模板,该结构在联机文档“Win32 SDK”中有描述。
当构造了一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MFC 简易 聊天室