我在服务端弄了个计时(也就是从1到75秒,然后又重头反复循环),我现在是想如何让客户端能和服务端的计时同步该如何做呢?麻烦给个思路,谢谢!
解决方案 »
- 问下delphi程序做好后,想打包成安装包,能同时安装数据库,不知道那位有什么好的办法都教我一下
- 在网上找到MD5的算法,但不知道怎样调用,有谁可以指明
- 怎么都这样呢,我就不信没人有个明确的说法?
- 简单问题:DBGrid显示数据
- 救我啊!!!三天了!!!delphi7 dbexpress组件TSQLStoredProc返回值,为什么前三次都是 零???以后正常!为什么????分不够另开帖!!
- 关于Picklist的问题。
- PCI光电隔离I/O口串口编程的源程序或协议
- 先解决先得分!
- RichEdit控件为什么不能使用右键的“复制,全选”等功能?
- 如何将C的Memcpy()转换成Delphi中的代码??
- 这些代码出错在哪儿了
- TOpenDialog 得到文件名是乱码问题
如果是取服务器的时间哪如何重复的取75秒呢?也就是说到了75秒又自动重1开始计算,麻烦告知谢谢
呵,关键是客户端要和服务端的计时同步呀,如果各自加各自的那如何同步呢?麻烦告知谢谢!
方法1:在服务器端建立一个UDP广播网络,每隔一段时间(比如1秒)将计时值广播到整个局域网
在客户端建立一个UDP监听服务,接收计时广播并处理
方法1的精度应该可以达到几十个毫秒吧(呵呵,我自己认为,并无验证)方法2:服务器与客户机的时钟对时(可以手动对时,也可以使用通讯的方法定期对时,也可以和标准时间对时),循环计时过程如下
a.读取本地当前时间并记作BeginTime
b.读取本地当前时间并记作CurrTime
c.使用SecondsBetween函数计算当前时间与起始时间的差值(单位为秒),并显示
d.使用定时器循环步骤b和步骤c,如果时间差值超过75,则重新从步骤a开始
方法2的精度应该更低,并且与对时的精度有关,但是应该可以控制在10秒左右吧,呵呵
我是要做一个抽奖程序,也就是一个服务端和多个客户端组成,也就是由服务端计时从1到75秒的时间是有客户端来选中抽奖号码?到了75秒服务端就开奖了,客户端就不能再选号码了,开完奖后又重新计时,所以客户端和服务端的时间误差不能超过一秒,否则服务端开奖了客户端还能抽那开出的奖项就不对了,麻烦各位再帮想想有什么更好的方法,小弟谢谢了
难道然让服务端每隔一秒写入数据库时间,然后让客户端每秒读一次,我现在就是这么做的,但运行久了数据库就会报错,是不是读取数据库太频繁了!
但要让客户端知道时间呀,也就是说必须让客户知道当前服务端所计算的时间,并不是只查询几秒钟呀,必须时时计时,该如何实现呢?
或
通过一个公共的内容:一个共享文件或一个记录里的一个字段(服务器写,客户端读)
客户端每次只要查询sql: select getdate() as fdt 就行了,服务端 不用另外写 数据库
如果是用select getdate() as fdt 的话那如何计算75秒的时间呢?还有因为开奖需要大概十五秒左右,也就是说当时间计算到75秒的时候服务端和客户端大概要等15秒左右才能再从1开始计算,具体的如何实现呢?麻烦告知谢谢
客户端取这个时间值和不断取的getdate()比较,就知道服务器的状态了
2.是从1 到 75秒反复循环
3.每当服务端运行到75秒的时候会有15秒的开奖时间,也就是说在运行15秒开奖后再从1开始计时。
最后顺便问一下我用的是简化绿色版的SQL server,会不会是用了这种绿色版的sql运行久了才会报错呀!