博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#远程时间同步助手软件设计
阅读量:5161 次
发布时间:2019-06-13

本文共 7883 字,大约阅读时间需要 26 分钟。

原文:

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 on
2019-04-18 10:06 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10727896.html

你可能感兴趣的文章
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
CVE-2014-6321 && MS14-066 Microsoft Schannel Remote Code Execution Vulnerability Analysis
查看>>
给一次重新选择的机会_您还会选择程序员吗?
查看>>
Mysql MHA高可用集群架构
查看>>
心急的C小加
查看>>
编译原理 First,Follow,select集求法
查看>>
(一一二)图文混排中特殊文字的点击与事件处理
查看>>
iPhone开发经典语录集锦 (转)
查看>>
SVM基础必备常识
查看>>
FPGA时序约束的几种方法 (转)
查看>>
cocos2dx 3.x tolua 分析
查看>>