时钟同步实施方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时钟同步
1 功能简介
在Windows系统中,时钟同步是通过Windows Time服务(W32Time)完成的。W32Time通过NTP(Network Time Protocol)协议访问目标时钟同步服务器的123端口进行时间同步。服务器的地址可以在“时间与日期”设置窗口的“Internet Time”选项中进行设置。Windows默认提供了几个互联网上的时钟同步服务器地址,比如:,电脑上的时钟同步就是W32Time通过访问这里预设的服务器地址进行的。默认的时间间隔是7天。为了达到系统内部服务器时钟同步的要求,需要在一级平台部署时钟同步服务器,其他服务器都与这台服务器进行时钟同步。
2配置步骤
2.1服务端配置
1)选择车辆轨迹数据整合系统服务器作为时间同步服务器。
2)运行regedit,打开注册表编辑器。
3)找到注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\
在右侧窗口中将AnnounceFlags的值修改为5。
4)找到注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\Nt pServer\
在右侧窗口中将Enabled值改为1。
5)在命令行中输入net stop w32time && net start w32time重启W32Time服务。
6)修改Windows防火墙设置,允许123端口的UDP连接。
2.2客户端配置
1)设置目标服务器地址。
打开修改日期与时间的窗口,进入“Internet Time”选项,输入时钟同步服务器的网址或IP 地址。然后点击同步按钮,配置没问题的话,就会显示同步成功,如下图:
2)设置同步时间间隔。
默认的同步时间间隔是7天,可以修改为所需的同步时间间隔。
在客户端电脑上打开注册表编辑器,找到注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\Nt pClient
在右侧窗口中找到SpecialPollInterval,打开修改窗口,选择十进制,输入同步时间间隔即可(单位为秒)。如下图设置为一小时更新一次。
3)在命令行中输入“net stop w32time && net start w32time”重启W32Time服务,同步服务器时间并查看同步时钟间隔设置,如下图所示。
3应用软件
时钟同步服务器部署完毕后,客户端可以通过执行系统命令来完成与服务端的时钟同步要求。开发应用软件,并测试运行。如下图所示。
完成时钟同步后,获取时钟同步状态标记,可以作为时钟同步状态的日志发送给服务端,保证上下级系统同步信息一致。
附:
工程中加入配置项:ServerIP(默认172.20.51.130)
C#生成一个进程,该进程调用cmd命令来执行时钟同步操作。代码
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.IO;
using System.Xml;
using System.Diagnostics;
namespace TestWork
{
using TestWork.Properties;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Process por = new Process();
por.StartInfo.FileName = "cmd.exe";
eShellExecute = false;
por.StartInfo.RedirectStandardInput = true;
por.StartInfo.RedirectStandardOutput = true;
por.StartInfo.RedirectStandardError = true;
por.StartInfo.CreateNoWindow = true;
por.Start();
por.StandardInput.WriteLine(textBox1.Text);
por.StandardInput.WriteLine("Exit");
textBox2.Text = por.StandardOutput.ReadToEnd(); string strOut = this.textBox2.Text;
if (strOut.Contains("成功") || strOut.Contains("Sucess")) {