zoukankan      html  css  js  c++  java
  • 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 + @"ConfigSetConfig.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


  • 相关阅读:
    flask 使用Flask-SQLAlchemy管理数据库(连接数据库服务器、定义数据库模型、创建库和表) --
    flask 操作数据库(分类) --
    flask渲染模板时报错TypeError: 'UnboundField' object is not callable --
    flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因 --
    flask 单个页面多个表单(单视图处理、多视图处理) --
    flask 单个表单多个提交按钮 --
    jython 2.7.1 版本开发历史
    TP v5中Url Compat模式
    乱弹
    改改"坏"代码
  • 原文地址:https://www.cnblogs.com/JiYF/p/6103965.html
Copyright © 2011-2022 走看看