服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

在C/S体系中设置工作站与服务器的时钟同步


发布日期:2023年06月01日
 
在C/S体系中设置工作站与服务器的时钟同步

摘要

在实际应用中经常要求客户机/服务器体系结构中各工作站的时钟与服务器的时钟保持同步本文基于SYBASE数据库Powerbuilder开发工具说明了一种解决方法

前言

PowerBuilder通过数据窗口对象可方便直接地对数据库进行操作故已成为当前开发Client/Server模式应用的首选开发工具在开发医院信息管理系统时我们采用了PowerBuilder 作为前台开发工具Sybase作为后台数据库

医院信息管理系统中有很多模块都要求工作站的时间与服务器保持同步门诊收费系统要求能均匀地向各司药窗口分派处方住院药房摆药要根据病房发送医嘱的时间顺序进行等为解决此问题我们编写了相应的程序主要思路是采用动态游标获取服务器时间 WIN的API函数设置本机时间具体实现方法如下

实现方法

连接数据库

PowerBuilder支持多种数据库管理系统(DBMS)如SybaseOracleInformixMicrosoft SQL Server等根据不同的数据库类型采用专用接口或ODBC连接数据库建立接口配置文件(DB Profile)

创建应用对象在应用对象事件中编写脚本

>应用对象open事件的脚本如下

startupfile = settimeini

sqlcaDBMS= ProfileString (startupfile database dbms )

sqlcadatabase=ProfileString(startupfiledatabasedatabase)

sqlcauserid=ProfileString(startupfiledatabaseuserid)

sqlcadbpass=ProfileString(startupfiledatabasedbpass )

sqlcalogid=ProfileString(startupfile database logid)

sqlcalogpass=ProfileString (startupfile databaseLogPassWord )

sqlcaservername=ProfileString(startupfiledatabaseervername)

sqlcadbparm= ProfileString (startupfile database dbparm )

connect;

f_setlocaltime() //调用自定义函数完成设置本地工作站时间

>应用对象Close事件中的脚本如下

DISCONNECT Using SQLCA;

定义WIN的API函数为外部函数

在Script画笔工作区中选择Declare > Global External Functions定义WIN的API函数为外部函数定义如下

FUNCTION LONG SetLocalTime (ref systemtime systimeptr) LIBRARY Kerneldll

定义存取时间参数的结构

单击PainterBar或PowerPanel中的Structure Painter按钮定义一个名为systemtime的结构组成结构的变量与对应的数据类型如下

integer wyear

integer wmonth

integer wdayofweek

integer wday

integer whour

integer wminute

integer wsecond

integer wmillisecond

创建用户自定义函数来完成设置工作站时间

创建一个名为f_settime的自定义函数脚本如下

systemtime s_systime //声明前面已定义结构类型的变量

datetime nettime

declare cur_time dynamic cursor for sqlsa; //声明动态游标

prepare sqlsa from select getdate();

open dynamic cur_time ;

fetch cur_time into :nettime; //通过数据库获取服务器时间

close cur_time;

s_systimewmonth=month(date(nettime))

s_systimewday=day(date(nettime))

s_systimewyear=year(date(nettime))

s_systimewhour=hour(time(nettime))

s_systimewminute=minute(time(nettime))

s_systimewsecond=second(time(nettime))

s_systimewmillisecond=

SetLocalTime(s_systime) //调用WIN API函数设置工作站时间

创建可执行应用程序

在PowerBar或PowerPanel中单击Project按钮打开Project PainterSelect Project对话框出现单击New创建一个新的工程对象输入可执行程序名(如settimeexe)单击OK然后单击build即可创建可执行文件

将可执行程序安装至各工作站

将生成的可执行程序(如settimeexe)放入各工作站的Windows的启动菜单即可在每次启动Windows时工作站自动根据服务器时间校正本机时间

结束语

上述方法是创建一个独立的可执行文件来实现工作站与服务器的时间同步编程时也可在应用程序的open事件或程序登录对应事件中调用上述f_settime函数以实现工作站的时间与服务器同步此方法已在开发医院信息管理系统中加以应用取得了很好的效果

上一篇:网络游戏服务器端编程:数据控制语言[1]

下一篇:网络游戏服务器端编程:数据描述语句[2]