锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 学员作品 / 面授焦同学和梁同学团队,NTP网络授时程序
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

授时系统客户端概要设计说明书

关键词:C/S架构,多视图界面,多线程技术,复杂的文本格式协议


1 总体设计

1.1编写目的

特定局域网内为实现某具体工作而要求一个统一的时间,因此需要通过一台服务器,向其他客户机群发送统一授时时间。

1.2运行环境

需求名称

详细要求

软件环境

windows xp系统

硬件系统

普通PC均可

1.3基本设计概念和处理流程

本系统基于C/S架构模式,使用Socket套接字进行通信,使用自定义通信协议。
系统处理流程如下所示:

系统处理流程

1.4结构

服务器端中使用的通信套接字如下表:

套接字

标识符

功能

服务器端侦听套接字

CMyServerSocket

对规定端口进行侦听

服务器端连接套接字

CNewSocket

与已连接客户端进行通信

服务器端窗口视图层次如下表:


模块

主框架

子框架

视图

标识符

功能

标识符

功能

标识符

功能

消息处理

CMainFrame

显示主框架

CRaChildFrame

自定义框架,显示消息处理框架

CMsgView

处理消息信息

打印处理

CMainFrame

显示主框架

CRaChildFrame

自定义框架,实现打印预览功能

CRecView

显示查询条件

CPrePrintView

实现打印预览框架

CRaChildFrame

自定义框架,实现打印功能

2 数据结构设计

服务器端重要数据结构描述表:


数据结构名称

标识符

类型

长度

作用

通信套接字缓冲区

CNewSocket:: m_szBuffer

char

4096字节

存储服务器与客户端之间通信的数据包

消息处理子框架关联视图

CMsgView

CFormView

显示消息处理界面

打印预览子框架关联视图

CRecView

CFormView

显示查询信息处理界面

打印子框架关联视图

CPrePrintView

CView

显示打印预览界面

实现打印功能

列表框控件

CMyList

CListCtrl

显示查询结果

3 需求分析设计

3.1 功能性设计需求

3.1.1启动侦听

通过Socket套接字对特定端口进行持续性侦听,以便客户端能随时连上服务器。

3.1.2 关闭侦听

和启动侦听功能相对,关闭服务器侦听状态,关闭后,客户端连接服务器时提示超时错误,从而实现关闭服务器的功能。

3.1.3授时中断

在与某一具体客户端进行授时过程中,由服务器主动中断与该客户端的数据传输,而其他客户端依然可以连接到服务器。

3.1.4 授时确认

接收客户端的授时请求后,将此时刻的服务器时间发送至该客户端。

3.1.5 授时精度

与客户端相一致,授时精确到秒,体现在界面上为授时时间每秒调整一次。

3.1.6 支持渐变授时

若客户端发出的授时请求数据包内容为渐变授时,则服务器会在该授时时间段内等待客户端的回复信息,并在界面上动态显示具体的调整时间。

3.1.7 支持一次性授时

若客户端发出的授时请求数据包内容为一次性授时,服务器端授时后接收客户端回复信息并立即显示授时后状态(授时成功与否根据客户端回复信息判断)。

3.1.8 信息查询

每次服务器与客户端的授时记录会存入数据库,信息查询可以指定查询条件来检索数据库中符合条件的授时记录信息,查询结果以列表的形式展现,并支持对该列表中内容的打印预览及打印功能。

3.2 用户界面设计需求

3.2.1 授时功能多视图显示

支持多客户端同时连接服务器并向服务器发送授时请求,服务器以多视图的形式向用户显示各个客户端的请求处理状态,一个客户端请求对应一个视图,层次清晰,易于操作。

3.2.2信息查询界面

为用户设置供查询的条件,以几种查询条件的多种组合为条件从数据库中读取符合条件的记录集并显示给用户。

3.2.3 打印预览界面

允许用户预览存储查询结果的列表框,该预览中生成的列表框内容打印预览效果即为最终打印效果。

4 模块设计

4.1 授时

4.1.1 一次性授时

服务器端读取客户端的回复数据包,分析出此次授时的授时性质和授时状态,若授时性质为一次性授时服务器端会立即设置并返回授时状态,同时在用户界面上显示状态信息以提示用户此次操作的最终结果。

4.1.2 渐变授时

服务器端读取客户端的回复数据包,分析出此次授时的授时性质和授时状态,若授时性质为渐变授时,则服务器端会在设置相应授时状态的同时等待并处理客户端的动态同步回复信息,此处理结果也以时间走秒的形式动态呈现给用户,使用户时刻掌握服务器的运行状态。

4.2 信息查询

4.2.1 记录数据的统计

首先提供给用户用于查询的检索条件,而后根据用户所选条件的各种组合情况来查数据库,将符合检索条件的记录的完整信息(包括记录的条数,记录的各字段内容等)输出至用户界面以供用户查看和使用。

4.2.2 报表的打印预览

用户在打印查询结果列表之前先预览一下打印的效果,打印预览呈现的打印效果即为最终报表的打印效果。

5接口设计

5.1 用户界面设计规则

5.1.1 字体

宋体,正常体,9号(打印文字为12号),黑色。

5.1.2 控件

a).尺寸
在合理的布局下尽可能多的显示控件内的内容。
b).布局
按照操作流程或浏览顺序自左至右、由上而下的排放各种控件,使界面整体协调、美观大方。

5.2 内部接口设计

授时模块与信息查询模块之间的功能比较独立,在程序逻辑上没有联系,而在数据共享上存在一定联系:授时模块将每次的授时信息写入数据库,信息查询模块根据具体的查询条件从数据库中读取各条授时信息记录。

5.3外部接口设计

1) 和Windows操作系统的接口主要通过API函数和MFC函数实现。
2) 和Access数据库的接口 通过ADO技术和SQL语句实现。

5.4 通信协议设计

5.4.1 协议总体介绍

该协议用于授时系统中,使用文本格式,tcp方式进行传输。协议支持2个基本要求:一次性授时完成和渐变多次授时。渐变多次授时规定有间隔步长。间隔步长规定了每隔多少秒来调整1秒时间。由于有渐变多次模式,所以服务器端通信数据的接收是被动方式,客户端连接上以后,有没有下次请求服务器端不知道,所以服务器端何时关闭,要由服务器端自己来定。

5.4.2格式规定

5.4.2.1 通信数据包动作表

动作

上行

下行

BAG

8位2进制数

标识动作有无

标识动作有无

IP

Ipv4

客户端IP

REQUEST

YYYY-mm-DD HH:MM:ss

客户端发送请求时间

TSERVER

YYYY-mm-DD HH:MM:ss

服务器时间

COMPLETE

0或1或2

0:授时失败,1:授时开始, 2:授时完成

TSPAN

间隔秒数

客户端调整时间的间隔秒数

SHUT

1上行
2下行

客户端断开连接

服务器断开客户端连接

5.4.2.2 BAG字段详细说明

8位二进制数,低6位标识相应动作有无,从低到高顺序依次为IP, REQUEST,TSERVER,COMPLETE, TSPAN,SHUT,剩余2位扩展。主要是为了提高包内数据分析效率;
例如:
BAG中数据为(00000011)2,则其代表当前数据包含有动作:IP和REQUEST。

5.4.2.3 IP字段详细说明

该字段记录客户端IPv4地址,主要用于标识服务器与特定客户端的连接和断开状态。

5.4.2.4 REQUEST字段详细说明

该字段记录客户端发送请求时的时间信息。

5.4.2.5 TSERVER字段详细说明

该字段记录服务器授于客户端的时间信息。

5.4.2.6 COMPLETE字段详细说明

该字段标识客户端向服务器回复授时情况,若值为0,则代表着本次授时失败;若其值为1,则表示客户端已经开始此次授时;若值为2,则代表授时完成。此时,服务器应重新发送授时信息。

5.4.2.7 TSPAN字段详细说明

该字段记录客户端调整时间间隔步长,范围0~30秒,若为0秒即为一次性授时,其他值则表示渐变授时。
渐变授时:间隔TSPAN秒,客户端时间向服务器时间靠近1秒。
例如:
TSPAN值为5,客户端时间与服务器时间相差3秒,则客户端从接受服务器时间开始,先将时差缩小1秒,而后每隔5秒再将时差缩小1秒,总共用时时间为5*(3-1)=10秒。

5.4.2.8 SHUT字段详细说明

该字段只在客户端或服务器中断连接时设置其值。

5.4.3数据包分隔符

段内分隔符:冒号“:”,分隔动作和其对应的值,例如IP:192.168.0.1
段间分隔符:美元符号“$”,分隔不同动作,例如IP:192.168.0.1$ REQUEST: 2010-07-13 14:50:03
结束符:“@”,标识数据包结束,例如IP:192.168.0.1$ REQUEST: 2010-07-13 14:50:03@

5.4.4 数据包格式

5.4.4.1 服务器端

服务器时间:BAG:4$TSERVER: $@ (BAG:100=>4)
授时中断: BAG:32$SHUT:2$@ (BAG:100000=>32)

5.4.4.2 客户端

请求: BAG:19$IP:$REQUEST: $TSPAN: $@ (BAG:010011=>19)
回复: BAG:8$COMPLETE:0/1$@ (BAG:1000=>8)
授时中断:BAG:40$COMPLETE:0$SHUT:1$@ (BAG:101000=>40)
授时成功:BAG:40$COMPLETE:2$SHUT:1$@ (BAG:101000=>40)

友情链接
版权所有 Copyright(c)2004-2024 锐英源软件
统一社会信用代码:91410105098562502G 豫ICP备08007559号 最佳分辨率 1440*900
地址:郑州市金水区文化路97号郑州大学北区院内南门附近