如何同步工作站(win98)与服务器(winNT)的时间?(无内容)(100分)

  • 主题发起人 主题发起人 qj_chen
  • 开始时间 开始时间
1.先取server的时间.如果用sqlserver,有一个系统
存储过程.
2.设置本机时间.
我记得有winapi.
 
我记得winnt 上有一个nettime 的命令。
取到后在设置本机时间,ok?
 
另:JavaScript或HTML上有取得服务器上时间的语句,再不行就通过CGI来传递吧!
 
NET_API_STATUS NetRemoteTOD(
LPTSTR UncServerName,
LPBYTE *BufferPtr
);
//返回指定Server的时间信息
BufferPtr: 指向结构 TIME_OF_DAY_INFO 的指针

typedef struct _TIME_OF_DAY_INFO {
DWORD tod_elapsedt;
DWORD tod_msecs;
DWORD tod_hours;
DWORD tod_mins;
DWORD tod_secs;
DWORD tod_hunds;
LONG tod_timezone;
DWORD tod_tinterval;
DWORD tod_day;
DWORD tod_month;
DWORD tod_year;
DWORD tod_weekday;
} TIME_OF_DAY_INFO, *PTIME_OF_DAY_INFO, *LPTIME_OF_DAY_INFO;

在 netapi32.dll 中实现
 
net time //服务器 /set

WinExec('net.exe time //server /set',SW_NORMAL)
 
Dear slicker & Pipi: 我想在每次程序启动时都自动将系统时间与服务器时间同步一次。
请举例示范。谢谢!!!
 
仔细检查了一下文档,发现下面一句:
NetRemoteTOD was not supported on windows!
Windows95/98的NetAPI32.DLL中只实现了NetBIOS一个API
so sorry,

1.如果您使用数据库,获得服务器的时间最简单的方法就是调用数据库的时间函数,
2.如果你使用com/dcom等三层结构,可以使用RPC
3.PiPi的方法使用Net 命令直接设置,不过要改为:
<FONT COLOR=#0000FF>WinExec('net.exe time //server /set',</FONT><FONT COLOR=#FF0000>SW_HIDE)</FONT>
避免弹出运行外部程序的窗口;
如果使用1,2方法,要使用API SetLocalTime 设置本地时间(其它函数无效)
你可以自己分析利弊并选择,

 
Pipi的方法是正确的。
 
上述办法都无法避免网络传输带来的延迟,
这个问题实际上取决于你所要求的同步精度。
我以前做的一个工控系统中,为了达到有效
的精度,在服务器端和远动端(前端)都安装了
GPS。
 
使用
WinExec('net.exe time //server /set',SW_HIDE)
仍然会弹出运行外部程序的窗口!!!
 
I do not know the reason, but it works well in my system, either the first code in
project, or actived by a button....
mybe, you should show some code in you project.
BTW, add /YES to net command,
WinExec('net.exe time //lzh1 /set /yes',SW_HIDE)
 
可以分别做一个客户端和服务器端的程序,服务器端的始终在监听,用WinSock,
不能用WinExec();纯属"八路军糊弄共产党",自欺欺人!!
 
使用slicker的方法:winexec(...)可以,但是服务器名不能使用变量,很遗憾!!!
如何使用NET_API_STATUS......请提供完整的使用例程。谢谢!!!
 
Sorry,我自己搞错了。接受Slicker的答案。
 
Sorry,我自己搞错了。接受Slicker的答案。
 
接受答案了.
 
后退
顶部