C#远程时间同步助手软件设计

C#远程时间同步助手软件设计

本程序才C#语言开发,实现远程时间同步功能,可以将本地时间每隔一段时间与时间服务器时间进行同步!不足之处还望见谅!

软件开发环境:Visual Studio 2010

软件安装简单说明

时间服务器的ntp服务开启状态:

TimeSync.exe时间同步软件
本软件为纯绿色版,不需要安装,可以直接点击运行,编译环境.net4.0

第一步:双击TimeSync.exe
第二步:参数设置--》设置--》输入服务器ip地址和端口以及间隔同步时间---》确定---》重新启动
第三步:参数设置--》设置为自启动(开机自动开启)

一、Win7开启NTP服务

二、程序运行结果展示

三、部分程序代码展示

四、程序源代码下载地址


一、Win7开启NTP服务

 

在桌面上右击“计算机--》选择“管理--》然后选择--》服务

选中“Windows Time”,设置为开启,这样就可以将“Windows Time”这一个服务打开。“开始”--》“运行”--》输入“regedit”打开注册表。

找到NetSerVer这一项,具体见插图,里面很详细。


 

将NetSerVer下Enabled的值设置为 1。

重启电脑系统,就可以使用该电脑作为NTP服务器了

 


 

 

二、程序运行结果展示

1.程序主窗体


2.程序服务器配置


3.程序托盘设计


4.程序所用控件以及布局等等


三、部分程序代码展示

 

//读取配置信息
        public void Read()
        {
            IniFile cfg = new IniFile(Application.StartupPath + @"\Config\SetConfig.ini");
            if (cfg != null)
            {
                NtpServerIP = cfg.IniReadValue("ServerConfig", "IP");
                comboBox1.Items.Add(NtpServerIP);
                comboBox1.SelectedIndex = 0;
                NtpServerPort = cfg.IniReadValue("ServerConfig", "Port");
                textBox3.Text = cfg.IniReadValue("ServerConfig", "Interval");
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            var dt =  getTime();
            if (dt.ToString("yyyy-MM-dd HH:mm:ss") == "1900-01-01 08:00:00")
            { 
                MessageBox.Show("服务器异常!", "提示"); 
            }
            else
            {
                var Dt = DateTime.Now;
                label5.Text = (Dt - dt).ToString("ss");
                textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm:ss");
            }

        }
        private void btnStartSet_Click(object sender, EventArgs e)
        {
            if (SetTime())
            { MessageBox.Show("时间同步成功!", "提示"); }
        }
        public DateTime getTime()
        {
            var client = new SNTPTimeClient.SNTPTimeClient(NtpServerIP, NtpServerPort);
            if (client.Connect())
            {
                DateTime getEd = client.ReceiveTimestamp;//获取指定IP的系统时间
                return getEd;
            }
            else
            {
                string date = "1900-01-01 08:00:00";
                DateTime getEd = Convert.ToDateTime(date);
                return getEd;
            }
           // SNTPTimeClient.SNTPTimeClient.SetLocalTime(ref st);//设置本地时间
          }

        public bool SetTime()
        {
            var client = new SNTPTimeClient.SNTPTimeClient(NtpServerIP, NtpServerPort);
            if (client.Connect())
            {
                DateTime getEd = client.ReceiveTimestamp;//获取指定IP的系统时间
                var st = new SystemTime
                {
                    wDay = (ushort)getEd.Day,
                    wDayOfWeek = (ushort)getEd.DayOfWeek,
                    wHour = (ushort)getEd.Hour,
                    wMiliseconds = (ushort)getEd.Millisecond,
                    wMinute = (ushort)getEd.Minute,
                    wMonth = (ushort)getEd.Month,
                    wSecond = (ushort)getEd.Second,
                    wYear = (ushort)getEd.Year
                };
                SNTPTimeClient.SNTPTimeClient.SetLocalTime(ref st);//设置本地时间
                //notifyIcon1.ShowBalloonTip(500, "提示", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ToolTipIcon.Info); 
                toolStripStatusLabel2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                toolStripStatusLabel3.Text = textBox3.Text.Trim() + "分钟后同步";
                return true;
            }
            else
            {
                notifyIcon1.ShowBalloonTip(500, "提示","服务器异常", ToolTipIcon.Info);
                return false;
            }
           }
        //最小化系统托盘图标可见
          private void FrmMain_SizeChanged(object sender, EventArgs e)
          {
              ShowInTaskbar = false;
              notifyIcon1.Visible = true;
              if (WindowState == FormWindowState.Minimized)
              notifyIcon1.ShowBalloonTip(500,"提示","小飞时间同步程序正在运行",ToolTipIcon.Info);
          }

        //双击托盘图标
          private void notifyIcon1_DoubleClick(object sender, EventArgs e)
          {
              if (WindowState != FormWindowState.Minimized) return;
              Show();
              WindowState = FormWindowState.Normal;
              notifyIcon1.Visible = false;
              ShowInTaskbar = true;
          }

        //拦截关闭按钮为最小化
          private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
          {
              e.Cancel = true;
              WindowState = FormWindowState.Minimized;
              notifyIcon1.ShowBalloonTip(500, "提示", "时间同步程序正在运行", ToolTipIcon.Info);
          }

          private void 显示主窗体ToolStripMenuItem_Click(object sender, EventArgs e)
          {
              WindowState = FormWindowState.Normal;
          }

          private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
          {
              if (MessageBox.Show("是否退出程序?", "退出", MessageBoxButtons.OKCancel) != DialogResult.OK) return;
              Dispose();
              Close();
          }

          private void timerLocal_Tick(object sender, EventArgs e)
          {
              textBox2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
              //var sec = STimer / 1000;
              //var dt = DateTime.Parse(Dt);
              //toolStripStatusLabel2.Text = dt.AddSeconds(sec).ToString("yyyy-MM-dd HH:mm:ss");
          
          }

          private void timerNet_Tick(object sender, EventArgs e)
          {
              SetTime();
          }

          private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e)
          {
              退出ToolStripMenuItem_Click(sender,e);
          }

          private void 服务器参数ToolStripMenuItem_Click(object sender, EventArgs e)
          {
              FrmSeting frmseting = new FrmSeting();
              frmseting.Show();
          }

        //自启动
          public static bool SetSelfStart()
          {
              try
              {
                  var exeDir = Application.ExecutablePath;
                  var rk = Registry.LocalMachine;
                  var softWare = rk.OpenSubKey("SOFTWARE");
                  var microsoft = softWare.OpenSubKey("Microsoft");
                  var windows = microsoft.OpenSubKey("Windows");
                  var current = windows.OpenSubKey("CurrentVersion");
                  var run = current.OpenSubKey(@"Run", true);
                  run.SetValue("时间同步程序", exeDir);
                  return true;
              }
              catch (Exception ex)
              {
                  MessageBox.Show(ex.Message);
                  return false;
              }
          }

        //取消自启动
          public static bool CancelSelfStart()
          {
              try
              {
                  var rk = Registry.LocalMachine;
                  var softWare = rk.OpenSubKey("SOFTWARE");
                  var microsoft = softWare.OpenSubKey("Microsoft");
                  var windows = microsoft.OpenSubKey("Windows");
                  var current = windows.OpenSubKey("CurrentVersion");
                  var run = current.OpenSubKey(@"Run", true);
                  run.DeleteValue("时间同步程序");
                  return true;
              }
              catch (Exception ex)
              {
                  MessageBox.Show(ex.Message);
                  return false;
              }
          }



          private void 设置为自启动ToolStripMenuItem1_Click(object sender, EventArgs e)
          {
              if (SetSelfStart())
              {
                  MessageBox.Show("加入自启动成功", "提示", MessageBoxButtons.OK);
              }
          }

          private void 取消自启动ToolStripMenuItem1_Click(object sender, EventArgs e)
          {
              if (CancelSelfStart())
              {
                  MessageBox.Show("成功取消自启动", "提示", MessageBoxButtons.OK);
              }
          }
        


 

四、程序源代码下载地址

程序工程下载地址  http://download.csdn.net/detail/coderjyf/9545672


posted @ 2016-06-10 14:45  JiYF  阅读(1595)  评论(0编辑  收藏  举报