API函数之四_客户机服务器体系

原创 2007年09月24日 00:00:00
摘要: 在实际应用中,经常要求客户机/服务器体系结构中各工作站的时钟与服务器的时钟保持同步;本文基于SYBASE数据库、Powerbuilder开发工具说明了一种解决方法。

  一、前言

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

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

  二、实现方法:

  1、 连接数据库

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

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

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

startupfile = "settime.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_setlocaltime() //调用自定义函数完成设置本地工作站时间
 

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

  DISCONNECT Using SQLCA;

  3、 定义WIN32的API函数为外部函数

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

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

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

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

integer wyear

integer wmonth

integer wdayofweek

integer wday

integer whour

integer wminute

integer wsecond

integer wmillisecond
 

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

  创建一个名为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_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 Painter。Select Project对话框出现,单击New创建一个新的工程对象,输入可执行程序名(如:settime.exe),单击OK。然后单击build,即可创建可执行文件。

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

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

  三、结束语

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

 

wincc的服务器-客户机模式具体做法

一、原来的工作方式: 在同一工作组中4台计算机其windows名分别为A、B、C、D且都已安装好wincc5.0+sp2,原来在每台计算机上运行的均是单用户,4台计算机上实际运行的是一个相同的项目,最...
  • zwxue
  • zwxue
  • 2013年08月08日 09:38
  • 2297

客户机服务器模式(C/S模式)

客户机/服务器系统 客户机/服务器系统 Client/server system 简称C/S系统。是一类按新的应用模式运行的分布式计算机系统。现在的LAN,Internet提供的多种服务都是这种模式 ...
  • DT_Zhangshuo
  • DT_Zhangshuo
  • 2016年10月07日 21:26
  • 2891

Python关于socket的一个小型服务器和客户机实例

一个小型服务器 >>> import socket >>> s=socket.socket() >>> hostname=socket.gethostname() >>> port=5566 >...
  • DongGeGe214
  • DongGeGe214
  • 2016年09月02日 22:09
  • 740

服务器与客户机之间传文件的几种小方法

收集于习科的各位大菊苣 当搞到一台肉鸡的时候,想向里面传点工具,,,遇到了困难,,,但是有菊苣。。。 1、mstsc,在高级选项里面,有个本地磁盘映射。可以进行复制。据说大文件不能复制,,,适...
  • u013995946
  • u013995946
  • 2015年03月18日 21:51
  • 687

数据结构实验之排序四:寻找大富翁

数据结构实验之排序四:寻找大富翁 Time Limit: 150MS Memory limit: 512K 题目描述 2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群...
  • guoqingshuang
  • guoqingshuang
  • 2015年12月23日 22:17
  • 2211

RMI

 RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的...
  • Mecoolshow
  • Mecoolshow
  • 2008年06月21日 17:17
  • 442

sdut 2134 数据结构实验之栈与队列四:括号匹配

数据结构实验之栈与队列四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem...
  • sxy201658506207
  • sxy201658506207
  • 2017年10月10日 18:40
  • 126

SDUT 3401 数据结构实验之排序四:寻找大富翁 堆排序

题目链接: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=3401 数据结构实验之排序四:寻找大富...
  • Autii
  • Autii
  • 2016年05月05日 22:22
  • 970

数据结构实验之查找四:二分查找

数据结构实验之查找四:二分查找 Time Limit: 20ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在一个给定的无重复元素的递增...
  • guoqingshuang
  • guoqingshuang
  • 2015年12月04日 09:51
  • 967

“Ceph浅析”系列之四Ceph的结构

本文将从逻辑结构的角度对Ceph进行分析。 4.1    Ceph系统的层次结构         Ceph存储系统的逻辑层次结构如下图所示[1]。         自下向上,可以将Ceph系统...
  • qq_24916117
  • qq_24916117
  • 2015年12月30日 20:42
  • 542
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:API函数之四_客户机服务器体系
举报原因:
原因补充:

(最多只允许输入30个字)