时间同步。(1分)

  • 主题发起人 主题发起人 fanronghua
  • 开始时间 开始时间
F

fanronghua

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端服务器方式。客户端的时间可能不准,在不修改客户端机器时间的模式下,怎么去保证 客户短与服务短时间一样。
 
客户端读取服务端的时间不就完了
 
不能经常去读,最好 就 启动的时候读一次,以后 都不读,
 
以启动时服务器的时间作为基准,然后程序对时间累加,虚拟时间.这样也不用改客户端的时间了
 
yy251745080:
你说的没有错,但是 我用Gettickcount 来记录时间差,但是这个时间不准,一个小时要差6秒钟。
 
这个 时间,根据各个机器不同,各有差异。谁有巧妙的办法。
 
隔一定的时间读一次喽。
 
既然不想改变客户端时间,不妨这样
1、读取服务器时间
2、读取客户端时间
3、计算差值
4、需要时间时就读取客户端时间加上差值
 
既然不想改变客户端时间,不妨这样
1、读取服务器时间
2、读取客户端时间
3、计算差值
4、需要时间时就读取客户端时间加上差值
-------------------当需要时候 客户端时间让用户该成了2099-12-12 12:12:12 这样的时间怎么办? 想这样的时间是不对的。
 
我现在的模式:
1、所以关于客户端提示数据中带时间的一律从服务器中取(select getdate() )
2.客户端一般都是权限设置死了只给user权限 不可以修改时间
3.客户端程序每次启动都取到服务器时间进行同步(就是修改客户端时间)
 
所有时间都只从服务器读取不就行了。比如,如果是用ms sql,那么每次涉及时间的,都用 'select getdate() as 时间 '来获取
 
shadowpj,NewLearner
客户端和服务器是用 UDP 连接的,是通过外网连的,而且客户端程序不涉及到Sql操作。
 
启动程序时从服务器获取一次时间
然后和本地计算出时间差备用

然后收取时间更改消息,当客户机时间被修改,你会收到此消息,具体资料可查msdn
当发现本机时间被修改,重新从服务器获取时间
 
1.使用目前最流行的加密锁,例如神思,roky和彩虹等。锁内均带有计时器,可以计算时间但是单客户端成本较高
2.用服务端把时间发送给客户端,在客户端显示不行么?或者可能的话在udp传输包的中间加上时间戳作为验证,由客户端收取到数据包后取得服务端的时间显示出来?
 
ufo!,
1。如果用GetTickcount 来计算时间差,你有没有发现这个时间是不准确的一个小时可能差几秒。
2。就用你这个方法如果当用户修改了本地时间,你去读取服务器时间,这个时候服务器不在线,你怎么办?

funxu,
1。目前的情况下,我们客户端软件虽然有狗,但是好像没有这个功能。
2。这个方案和上面的方案一样的,你的意思在每个Polling 包中带有服务器的时间,Polling 每一分钟一次。那我在这个一分钟中间要传输包,我这个时间取那个时间?
 
计算时间差,用now函数取回,然后加减就行,不用GetTickcount
 
后退
顶部