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

  摘要: 在实际应用中经常要求客户机/服务器体系结构中各工作站时钟和服务器时钟保持同步;本文基于SYBASE数据库、Powerbuilder开发工具介绍说明了种解决思路方法  、前言

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

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

   2、实现思路方法:

  1、 连接数据库

  PowerBuilder支持多种数据库管理系统(DBMS)如Sybase、Oracle、Informix、Microsoft SQL Server等;根据区别数据库类型采用专用接口或ODBC连接数据库建立接口配置文件(DB Profile)

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

  1>、应用对象open事件脚本如下:

startupfile = "time.ini"
sqlca.DBMS= ProfileString (startupfile, "database", "dbms", "")
sqlca.database=ProfileString(startupfile,"database","database","")
sqlca.userid=ProfileString(startupfile,"database","userid","")
sqlca.dbpass=ProfileString(startupfile,"database","dbpass", "")
sqlca.logid=ProfileString(startupfile, "database", "logid","")
sqlca.logpass=ProfileString (startupfile, "database","LogPassWord", "")
sqlca.servername=ProfileString(startupfile,"database",ervername","")
sqlca.dbparm= ProfileString (startupfile, "database", "dbparm", "")
connect;
f_localtime //自定义完成设置本地工作站时间
  2>、应用对象Close事件中脚本如下:

  DISCONNECT Using SQLCA;

  3、 定义WIN32API为外部

  在Script画笔工作区中,选择Declare > Global External Functions...定义WIN32API为外部定义如下:

  FUNCTION LONG SetLocalTime (ref systemtime systimeptr) LIBRARY "Kernel32.dll"

  4、 定义存取时间参数结构

  单击PaerBar或PowerPanel中Structure Paer按钮定义个名为:systemtime结构,组成结构变量和对应数据类型如下:

eger wyear
eger wmonth
eger wdayofweek
eger wday
eger whour
eger wminute
eger wsecond
eger wmillisecond
  5、创建用户自定义来完成设置工作站时间

  创建个名为f_time自定义脚本如下:

systemtime s_systime //声明前面已定义结构类型变量
datetime nettime
declare cur_time dynamic cursor for sqlsa; //声明动态游标
prepare sqlsa from "select getdate";
open dynamic cur_time ;
fetch cur_time o :nettime; //通过数据库获取服务器时间
close cur_time;
s_systime.wmonth=month(date(nettime))
s_systime.wday=day(date(nettime))
s_systime.wyear=year(date(nettime))
s_systime.whour=hour(time(nettime))
s_systime.wminute=minute(time(nettime))
s_systime.wsecond=second(time(nettime))
s_systime.wmillisecond=30
SetLocalTime(s_systime) //WIN32 API设置工作站时间
  6、创建可执行应用

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

  7、将可执行安装至各工作站

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

   3、结束语

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

Tags:  服务器同步 时间同步服务器地址 时间同步服务器 时钟服务器

延伸阅读

最新评论

发表评论