计算机中国象棋网络对弈软件毕业设计(编辑修改稿)内容摘要:

TCP TCP: Transmission Control Protocol 传输控制协议 TCP 是一种面向连接(连接导向)的、可靠的、基于字节流的运输层( Transport layer)通信协议,由 IETF 的 RFC 793 说明( specified)。 在简化的计算机网络 OSI 模型中,它完成第四层传输层所指定的功能。 TCP 是 TCP/IP 体系中非常复杂的一个协议 , TCP 的最主要的特点有: 1) TCP 是面向连接的运输层协议。 2) 每一条 TCP 连接只能有两个端点,每一条连接只能是点对点的。 3) TCP 提供可靠交付的服务。 4) TCP 提供全双工通信。 5) 面向字节流。 UDP UDP 是 User Datagram Protocol 的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 它是 IETF RFC 768 是 UDP 的正式规范。 安徽工业大学 毕业设计(论文)说明书 共 51 页 第 5 页 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 用户数据报协议 UDP 只在 IP 的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。 UDP的主要特点是: 1) UDP 是无连接的,即发送数 据之前不需要建立连接,因此减少了开销和发送数据之前的时延。 2) UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。 3) UDP 是面向报文的。 Socket socket 的英文原义是 “ 孔 ” 或 “ 插座 ”。 作为 4BDS UNIX 的进程通信机制,取后一种意思。 通常也称作 套接字 ,用于描述 IP 地址和端口,是一个通信链的句柄。 所谓 socket 通常也称作 套接字 ,应用程序通常通过 套接字 向网络发出请求或者应答网络请求。 如何 使用 Socket 开发一个 ServerClient 模型的程序。 服务器,使用 ServerSocket 监听指定的端口,端口可以随意指定(由于 1024 以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于 1024 的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。 客户端,使用 Socket 对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭 Socket。 客户端不需要指定打开的端口,通常临时的、动态的分配一个 1024 以上的端口。 Socket接口是 TCP/IP 网络的 API, Socket接口定义了许多函数或例程,程序员可以用它们来开发 TCP/IP 网络上的应用程序。 要学 Inter 上的TCP/IP 网络编程,必须理解 Socket 接口。 Socket 接口设计者最先是将接口放在 Unix 操作系统里面的。 如果了解 Unix 系统的输入和输出的话,就很容易了解 Socket 了。 网络的 Socket 数据传输是一种特殊的 I/O, Socket也是一种文件描述符。 Socket 也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的 Socket 描述符,随后的连接建立、数据传输等操作都是通过该 Socket 实现的。 Java 实现 Java 提供了灵活方便的类实现 Socket 通信 , 包中拥有丰富的 API,与 TCP 和 UDP 相关的有。 IAddress:用来封装 IP 地址的类。 ServerSocket:用来产生服务器套接字实例的类。 Socket;用来产生客户端套接字实例的类。 DatagramPacket:用来产生数据包实例的类。 安徽工业大学 毕业设计(论文)说明书 共 51 页 第 6 页 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ DatagramSocket:用来实现 UDP 套接字的类。 另外 提供了 InputStream 和 OutputStream 虚类实现对字节流操作 的封装。 安徽工业大学 毕业设计(论文)说明书 共 51 页 第 7 页 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 架构 设计与 通信 设计 中国象棋网络版架构分析与设计 本软件要实现多用户在线弈棋,所以采用 C/S 架构,服务器端和客户端分别完成各自的功能。 服务器需要实现登录注册和弈棋通信两大功能模块,提供登录、注册、数据转发、在线用户数据维护、建立弈棋等服务功能。 将服务器分为两大模块是因为这两个模块可以完全分离,互不影响,独立运行,保证了登录模块出现异常不会影响到已在线用户的用户体验,提高了服务器的可用性。 客户端需要实现登录、注册、弈棋、用户列表、实时交流和棋局状态记录显示六大功能,需 要设计登录、注册、弈棋、用户列表维护、实时交流、棋局状态记录显示、登录注册和弈棋通信八大模块。 中国象棋网络版 数据通信设计与实现 通信协议选择 经架构分析将登录 注册模块 与弈棋的通信模块分开设计,又根据两个模块对网络通信 可靠性和即时性要求不同,所以设计登录模块的网络层通信协议为 UDP协议,弈棋通信模块的网络层通信协议为 TCP 协议。 效率分析: UDP 协议是无连接、不需要包检测和重传机制的 ,优点是网络通信效率高。 而 TCP 协议是面向连接的,需经过三次握手,拥有包检测和重传机制,保证了数据完整和正确 性,优点是可靠。 登录注册模块需要提供一个高效但不一定可靠的响应,即该模块允许在通信过程中丢包。 每一次登录注册请求与响应只产生一个往返的数据报, UDP 协议的无连接特性保证的数据通信的高效性。 面对恶意登录请求,如果选择 TCP协议,大量的建立连接会 占用过多的系统资源, 产生很高的服务器负载 ,影响服务质量,降低客户的用户体验。 所以登录注册模块选择 UDP协议可以带来一个高效益的服务响应。 弈棋通信模块需要给客户提供一个高可靠性和稳定性的连接,即不允许在通信过程中发生数据丢失而不处理的事件。 如果采用 UDP协议需要在服务 器应用中添加包检测与重传功能,增加了服务器负载。 且弈棋通信是一个较长的数据通信过程,使用 UDP协议并不能很大提供数据通信效率,而 TCP协议很好的提供了包检测和重传机制,保证了数据通信的高可靠性和稳定性。 服务器与客户端的典型数据通信与处理流程图如图。 安徽工业大学 毕业设计(论文)说明书 共 51 页 第 8 页 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 图 服务器与客户端网络通信流程图 客户 端 底层数据发送和接收 登录和注册监听 底层数据发送和接收 登录和注册监听 UDP TCP 登录模块 注册模块 登录和注册处理模块 数据库 数据预处理和分发 数据预处理和分发模块 棋盘模块 用户列表模块 聊天模块 聊天和用户状态处理模块 棋局处理模块 服务器端 安徽工业大学 毕业设计(论文)说明书 共 51 页 第 9 页 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 数据类型分析 要实现在线对弈,就需要有数据的交互,根据预设的功能需要最基础的就有登录、登出、棋子移动、聊天等数据的通信,还有其它 一些如:棋子的选择、用户列表更新、棋谱的传输等数据通信。 如果不加分 类很容易产生混乱,所以根据数据所属的不同模块将这些数据进行分类。 数据传输方式以“ UTF8”字符编码明文传输,其消息字符串 message 中的第一个字符为系统消息,将第一个字符 char 的 2个字节 16bit 分为 4 级消息 charamp。 0xf00 charamp。 0xf 符号位 第二级消息 第四级消息 将此字符进行位移运算分离各级消息 第一级消息 第三级消息 charamp。 0xf000 charamp。 0xf0 关于棋盘的消息格式为 :4 字节字符串,前 2 个字节表示系统消息,后 2 个字节表示用户操作消息 : 闪烁消息: X坐标 y坐标 移动消息: 源 x坐标 源 y坐标 目的 x坐标 目的 y坐标 用户列表更新消息为 0 011 0011 0000 0000 1 3 4 4 4 0000 00xx xxxx xxxx 0 001 0010 0000 0000 xxxx xxxx xxxx xxxx 0 001 0011 0000 0000 安徽工业大学 毕业设计(论文)说明书 共 51 页 第 10 页 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ +。 + 用户积分 用户状态 816个。 为分隔符,分割 每个用户的信息 多个 服务器发送给旁观者的。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。