┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
3.中国象棋网络版架构设计与通信设计
3.1 中国象棋网络版架构分析与设计
本软件要实现多用户在线弈棋,所以采用 C/S 架构,服务器端和客户端分别
完成各自的功能。
服务器需要实现登录注册和弈棋通信两大功能模块,提供登录、注册、数据
转发、在线用户数据维护、建立弈棋等服务功能。将服务器分为两大模块是因为
这两个模块可以完全分离,互不影响,独立运行,保证了登录模块出现异常不会
影响到已在线用户的用户体验,提高了服务器的可用性。
客户端需要实现登录、注册、弈棋、用户列表、实时交流和棋局状态记录显
示六大功能,需要设计登录、注册、弈棋、用户列表维护、实时交流、棋局状态
记录显示、登录注册和弈棋通信八大模块。
3.2 中国象棋网络版数据通信设计与实现
3.2.1 通信协议选择
经架构分析将登录注册模块与弈棋的通信模块分开设计,又根据两个模块对
网络通信可靠性和即时性要求不同,所以设计登录模块的网络层通信协议为 UDP
协议,弈棋通信模块的网络层通信协议为 TCP 协议。
效率分析:
UDP 协议是无连接、不需要包检测和重传机制的,优点是网络通信效率高。
而 TCP 协议是面向连接的,需经过三次握手,拥有包检测和重传机制,保证了数
据完整和正确性,优点是可靠。
登录注册模块需要提供一个高效但不一定可靠的响应,即该模块允许在通信
过程中丢包。每一次登录注册请求与响应只产生一个往返的数据报,UDP 协议的
无连接特性保证的数据通信的高效性。面对恶意登录请求,如果选择 TCP 协议,
大量的建立连接会占用过多的系统资源,产生很高的服务器负载,影响服务质量,
降低客户的用户体验。所以登录注册模块选择 UDP 协议可以带来一个高效益的服
务响应。
弈棋通信模块需要给客户提供一个高可靠性和稳定性的连接,即不允许在通
信过程中发生数据丢失而不处理的事件。如果采用 UDP 协议需要在服务器应用中
添加包检测与重传功能,增加了服务器负载。且弈棋通信是一个较长的数据通信
过程,使用 UDP 协议并不能很大提供数据通信效率,而 TCP 协议很好的提供了包
检测和重传机制,保证了数据通信的高可靠性和稳定性。
服务器与客户端的典型数据通信与处理流程图如图 3.1。