C/S中如何使客户端和服务器的时间一致?(30分)

N

nywjx

Unregistered / Unconfirmed
GUEST, unregistred user!
C/S中,采用SQL Server2000,一个服务器端程序和数据库一起放在计算机A中,一个客户
端程序放在计算机B中,两者通过局域网连接,B中设置ODBC和A中的数据库连接。
我采用什么方法可以使B中的客户端程序的时间和服务器端程序保持一致?
我采用从SQL Server2000数据库中获取时间,可是数据库时间改变后,好像不能马上反应
到客户端。怎么解决?
 
最好是做一个同步程序,可以采用socket通信,以服务器端时间为准,通过socket消息告知
服务器端的时间,让客户端修改系统时间,我以前曾经作过,可以同步到豪秒。
 
1、用存贮过程可以得到服务器时间。
2、我想一般可能不需要立即反应到客户端吧?时间总是不会经常调的。一天校对一次就够了吧?
 
我想保持一致的目的是不是在存盘时保证数据的日期的正确性。
如果是的话,可以在DataSet的CommandText中填入'select date',再OPen
'select date'不知道对不对,记不清了,差不多是这样,自己再试试
 
to chenxz:
我现在就是这样做的,可是不能精确到毫秒啊。差好几秒呢。
to 远帆:
客户端程序启动时,可以通过存储过程得到服务器时间,就在这个时间的基础上增加吗?
还是需要每秒都读服务器的时间?
 
在数据连接开始检测一下服务器端的时间(写DatabaseAfterConnect事件),并用它取代本机时间,
只要数据连接不中断是不需要考虑它的
 
怎么可能差几秒,除非你取的服务器时间不准。
做法是服务器端获取本机时间,发送给客户端,客户端收到后立即更新系统时间。
 
取代本机时间?怎么取代?退出后能回复吗?
 
客户端程序启动时,可以通过存储过程得到服务器时间,就在这个时间的基础上增加吗?
还是需要每秒都读服务器的时间?
读一次,改变本机时间,以后读本机时间就可以了。

不过我觉得从精度上来说chenxz的方法可能更准一点,不过需要另开发一个程序,可能并
不是很值。
 
那么用存储过程得到的时间和服务器本机的时间一致吗?差多少?
 
如果是nt域的话,不用这么麻烦啊?
你看看 net time 回车的结果。
至于用什么函数实现我就不知道了,也许msdn上有答案。
 
不能局限于nt的,这几个程序还有可能只在win98下运行
 
当然是一致的,只是会差多长时间我也不清楚,我想主要是与网络有关吧,
对于我们正常使用的局域网时间差应该是很小的,据做的一个局域网数据
传递程序的试验传递一个几K的数据也能够在几个毫秒内收到。
 
Select GetDate()
 
哈哈,是我自己搞错了。在两个地方同时对客户端时间加一秒了,我说怎么老是快呢。
对了,怎么增加这个帖子的分数啊?大家都这么踊跃,分太少了。还有就是能不能留
个qq,或email,常联系。我的email是wjx@easyentry.com.cn
 
1005736,你是用什么方法的?
 
多人接受答案了。
 
顶部