基于tcpip的网络聊天工具设计毕业论文(编辑修改稿)内容摘要:

编程过程中,会结合多项协议。 而其中应用最广泛的是 TCP/IP 协议。 应用进程间的相互通信主要是利用 Winsock 规范中的 API,为了更进一步降低网络编程的难度,将 Winsock 实现具体功能的 API 进行封装,形成 MFC Socket。 编程过程中调用的是 MFC 封装后的套接字类,如 CSocket[12]。 如今网络开发应用中最为广泛使用的应用程序接口就是 Socket 接口,在实际的操作系统调用以及通信协议实现功能中,主要是采用图 22 的层级关系。 图 22 套接字实现通信的层级关系图 应用程序 1 应用程序 2 网络编程界面,例如 windows socket 网络通讯协议服务界面,例如 TCP/IP 操作系统,例如 Windows 物理通讯介质 第 6 页 TCP 套接字的应用 本次设计的聊天室主要是运用 TCP 套接字来实现信息传输, TCP 协议是采用面向连接的方式 [13]。 因此在 C/S 模式下,要保证服务器与客户端连接后,才能进行信息 传输。 在双方通信的过程中,服务器采用以下几个步骤来使用套接字接口:第一,使用 Socket()函数创建服务器端通信的套接口, 如果没有成功创建套接字端口,就无法继续执行;第二,将服务器的地址与所创建的套接口进行结合的过程中,要使用 Bind()函数完成 [14]。 该函数不仅确定本地的 IP 地址,还能绑定 Port 端口号。 如果采用 Create()函数进行,前两步将并为一步。 即不采用 Bind()函数;第三,服务器利用 Listen()来侦听请求消息,并打开通道准备接收;第四,当客户端发来信息后,服务器调用 Accept()函数 ,并新创建一个套接字,来重载 Revc()函数,从而达到接受数据的目的;第五,服务器如果要发送应答消息给客户端,主要采用 Send()函数;第六,最后停止套接口的使用,即调用 CloseSocket( )。 在这个过程中,客户端主要进行以下的 步骤 :第一, 通过 Create()函数,在客户端创建一个套接字;第二,客户端与服务器的连接通过 Connect()函数来实现;第三,实现连接后, 使用 Send()函数发送 消息。 或 者是加载 Recv()函数接收 消息 ;第四,使用 CloseSocket() 停止 套接字 接 口 的使用。 整体的 TCP套 接字运用流程如图 23 所示。 第 7 页 图 23 C/S 模式下 TCP 套接字运用流程图 MFC(Microsoft Foundation Class) MFC 简介 在 VC++环境中,存在一个函数框架 MFC,利用 MFC 类库可以在一定程度上降低网络编程的难度。 它是依附在标准的软件开发平台 VC++下的辅助软件开发包,与 VC++关系密切。 网络编程也因为 MFC 类库的存在变得更加简单。 它能够为许多应用程序提供函数模型 [15]。 同时 VC++内部具有许多支 持网络编程的东西,例如存在类向导,能够自动生成一些简单的程序,甚至是文档服务器等复杂的程序,可以在很大程度上减少软件开发的时间。 在整个 Windows 家族中, MFC 能够很好的与各项开发工具进行兼容,其消息映射机制能够在一定程度上减少虚函数表的数量。 Socket(),建立套接字 Bind(),将套接字与本 地地址连接 Listen(),通知 TCP, 服务器准备接受连接 Accept()接收连接, 并得到一个新套接字 Recv/Send(),在新套接 字上交换数据 Closesocket(),关闭新 套接字,结束 TCP 通话 Closesocket(),关闭监 听套接字,服务结束 Socket(),建立套接字 Connect(),将套接字与原地主机连接 服务器方 客户方 Send() /Recv(),在套接字上交换数据 Closesocket(),关闭套接字,结束 TCP 对话。 建立连接 服务请求 /响应 第 8 页 MFC 类库 传统的 C 语言更多的是对 Widows API 进行直接调用,而封装后的 MFC 类库是对原有的 C++层次进行拓展。 内部已经存在多种标准的样板文件代码,主要是应用在 C 编写的 Windows 程序中。 因此, MFC 类库主要是提供网络编程的框架,让网络编程更 易实现,而且其性能并没有受到损失。 比如, 的版本中就存在200 个不同的类,但是在实际的程序编写中,只会应用到十多个不同的类,根据这些类就可以编写出很完善和漂亮的程序。 MFC 结构主要存在以下几种类别:一是, Cobject 基类。 该类主要是作为大多数派生类的基类,其中 CAsyncsocket 类是从该类派生出来的。 它主要对Windows Socket 的 API 进行封装,但是封装级别较低 [16],而 CSocket 是继承了CAsyncsocket,在比较高的层次封装 Windows socket 的 API;二是, MFC 应用结构类。 该类主要是对一个整体的函数模型进行构造,能够在很大程度上为许多应用程序提供通用的功能,编程者可以在对应的框架上写出所要求的功能;三是,窗口、对话和控件类。 类 Cwnd 能够被自己使用,也是许多派生新类的基类,它与它的派生类共同封装了 Hwnd, Cwnd 是一个 Windows 窗口,其中存在的各项窗口是由 Cwnd 的派生类来表示;四是,文件和数据库类。 这些类是表示能够在一个数据库或是磁盘文件 中存储相关信息,其中 DAO 以及 ODBC 主要是实现访问数据库的功能;五是, MFC 的层次结构上也存在一些简单的数据库类型类、数据列表、调试类等。 第 9 页 第三章 系统设计 设计原理 该聊天室的设计是在 TCP/IP 协议的支持下。 网络编程分成两部分进行,即服务器与客户机。 在设计的过程中,主要是采用 TCP 面向连接的方式并结合Socket 套接字,实现通信 [17]。 在代码设计中,服务器端主要是由 CSocket 派生出两个新类,取名CServerSocket 和 ClientSocket。 客户端中的 CClientSocket 也是由 CSocket派生出来。 服务器的 CServerSocket 为监听套接字 ,当客户端发来的消息被服务器侦听到时,将加载 OnAccept 函数,并 新建一个通信套接字。 而客户端的 通信套接字 CClientSocket 主要是用于与服务器建立通信套接字,发送注册、登陆等命令字 [18]。 在操作流程的设计中,首先是将服务器端启动,客户端输入昵称和密码,将连接请求发送给服务器,服务器响应客户端的登陆请求,并更新聊天室的用户列表。 此时用户间可以进行文字聊天。 且 如果选择用户列表中的用户进行私聊,假设此 时用户不在线。 那么该离线消息同样会发到服务器,由服务器保存。 等到用户上线提取离线消息时,由服务器端转发出去。 同样客户端要实现 多人在线聊天的功能,保证聊天室的正常运行。 其实现的基本功能 如图 31 所示。 图 31 基本功能流程图 启动客户端 启动服务器,等待客户请求,处理用户数据 聊天 显示私聊信息 显示群聊信息 等待服务器发送信息 显示离线消息 显示在线用户 显示离线用户 第 10 页 系统总体功能结构 由客户端程序界面可知,该聊天工具包含以下主要功能:用户注册;用户登录;发送和接收私聊信息;发送和接收群聊消息;发送和接收离线消息。 由服务器端程序界面可知 ,服务器实现监听数据、连接客户端、查询并记录数据 到数据库、发出应答消息等功能。 最终实现的是更新用户列表,显示在线用户和离线用户,作为客户端的中转站,转发客户端的消息,保证客户端的通信顺利进行。 根据系统的要求,画出功能模块图 32 所示: 图 32 系统总体功能结构 服务器端模块 聊天工具 客户端端模块 建立连接 监听客户 数据处理 用户注册 用户登录 信息通信 私聊模块 群聊模块 离线消息 第 11 页 建立类模型 服务器端类 类的识别和功能 第一, CChatServerAPP 类。 服务器应用程序类。 通过该类实现服务器程序的初始化,且创建监听套接字,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。