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.程序所用控件以及布局等等

三、部分程序代码展示

  1. //读取配置信息
  2. public void Read()
  3. {
  4. IniFile cfg = new IniFile(Application.StartupPath + @"\Config\SetConfig.ini");
  5. if (cfg != null)
  6. {
  7. NtpServerIP = cfg.IniReadValue("ServerConfig", "IP");
  8. comboBox1.Items.Add(NtpServerIP);
  9. comboBox1.SelectedIndex = 0;
  10. NtpServerPort = cfg.IniReadValue("ServerConfig", "Port");
  11. textBox3.Text = cfg.IniReadValue("ServerConfig", "Interval");
  12. }
  13. }
  14.  
  15. private void button1_Click(object sender, EventArgs e)
  16. {
  17. textBox1.Clear();
  18. var dt = getTime();
  19. if (dt.ToString("yyyy-MM-dd HH:mm:ss") == "1900-01-01 08:00:00")
  20. {
  21. MessageBox.Show("服务器异常!", "提示");
  22. }
  23. else
  24. {
  25. var Dt = DateTime.Now;
  26. label5.Text = (Dt - dt).ToString("ss");
  27. textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm:ss");
  28. }
  29.  
  30. }
  31. private void btnStartSet_Click(object sender, EventArgs e)
  32. {
  33. if (SetTime())
  34. { MessageBox.Show("时间同步成功!", "提示"); }
  35. }
  36. public DateTime getTime()
  37. {
  38. var client = new SNTPTimeClient.SNTPTimeClient(NtpServerIP, NtpServerPort);
  39. if (client.Connect())
  40. {
  41. DateTime getEd = client.ReceiveTimestamp;//获取指定IP的系统时间
  42. return getEd;
  43. }
  44. else
  45. {
  46. string date = "1900-01-01 08:00:00";
  47. DateTime getEd = Convert.ToDateTime(date);
  48. return getEd;
  49. }
  50. // SNTPTimeClient.SNTPTimeClient.SetLocalTime(ref st);//设置本地时间
  51. }
  52.  
  53. public bool SetTime()
  54. {
  55. var client = new SNTPTimeClient.SNTPTimeClient(NtpServerIP, NtpServerPort);
  56. if (client.Connect())
  57. {
  58. DateTime getEd = client.ReceiveTimestamp;//获取指定IP的系统时间
  59. var st = new SystemTime
  60. {
  61. wDay = (ushort)getEd.Day,
  62. wDayOfWeek = (ushort)getEd.DayOfWeek,
  63. wHour = (ushort)getEd.Hour,
  64. wMiliseconds = (ushort)getEd.Millisecond,
  65. wMinute = (ushort)getEd.Minute,
  66. wMonth = (ushort)getEd.Month,
  67. wSecond = (ushort)getEd.Second,
  68. wYear = (ushort)getEd.Year
  69. };
  70. SNTPTimeClient.SNTPTimeClient.SetLocalTime(ref st);//设置本地时间
  71. //notifyIcon1.ShowBalloonTip(500, "提示", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ToolTipIcon.Info);
  72. toolStripStatusLabel2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  73. toolStripStatusLabel3.Text = textBox3.Text.Trim() + "分钟后同步";
  74. return true;
  75. }
  76. else
  77. {
  78. notifyIcon1.ShowBalloonTip(500, "提示","服务器异常", ToolTipIcon.Info);
  79. return false;
  80. }
  81. }
  82. //最小化系统托盘图标可见
  83. private void FrmMain_SizeChanged(object sender, EventArgs e)
  84. {
  85. ShowInTaskbar = false;
  86. notifyIcon1.Visible = true;
  87. if (WindowState == FormWindowState.Minimized)
  88. notifyIcon1.ShowBalloonTip(500,"提示","小飞时间同步程序正在运行",ToolTipIcon.Info);
  89. }
  90.  
  91. //双击托盘图标
  92. private void notifyIcon1_DoubleClick(object sender, EventArgs e)
  93. {
  94. if (WindowState != FormWindowState.Minimized) return;
  95. Show();
  96. WindowState = FormWindowState.Normal;
  97. notifyIcon1.Visible = false;
  98. ShowInTaskbar = true;
  99. }
  100.  
  101. //拦截关闭按钮为最小化
  102. private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
  103. {
  104. e.Cancel = true;
  105. WindowState = FormWindowState.Minimized;
  106. notifyIcon1.ShowBalloonTip(500, "提示", "时间同步程序正在运行", ToolTipIcon.Info);
  107. }
  108.  
  109. private void 显示主窗体ToolStripMenuItem_Click(object sender, EventArgs e)
  110. {
  111. WindowState = FormWindowState.Normal;
  112. }
  113.  
  114. private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
  115. {
  116. if (MessageBox.Show("是否退出程序?", "退出", MessageBoxButtons.OKCancel) != DialogResult.OK) return;
  117. Dispose();
  118. Close();
  119. }
  120.  
  121. private void timerLocal_Tick(object sender, EventArgs e)
  122. {
  123. textBox2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  124. //var sec = STimer / 1000;
  125. //var dt = DateTime.Parse(Dt);
  126. //toolStripStatusLabel2.Text = dt.AddSeconds(sec).ToString("yyyy-MM-dd HH:mm:ss");
  127.  
  128. }
  129.  
  130. private void timerNet_Tick(object sender, EventArgs e)
  131. {
  132. SetTime();
  133. }
  134.  
  135. private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e)
  136. {
  137. 退出ToolStripMenuItem_Click(sender,e);
  138. }
  139.  
  140. private void 服务器参数ToolStripMenuItem_Click(object sender, EventArgs e)
  141. {
  142. FrmSeting frmseting = new FrmSeting();
  143. frmseting.Show();
  144. }
  145.  
  146. //自启动
  147. public static bool SetSelfStart()
  148. {
  149. try
  150. {
  151. var exeDir = Application.ExecutablePath;
  152. var rk = Registry.LocalMachine;
  153. var softWare = rk.OpenSubKey("SOFTWARE");
  154. var microsoft = softWare.OpenSubKey("Microsoft");
  155. var windows = microsoft.OpenSubKey("Windows");
  156. var current = windows.OpenSubKey("CurrentVersion");
  157. var run = current.OpenSubKey(@"Run", true);
  158. run.SetValue("时间同步程序", exeDir);
  159. return true;
  160. }
  161. catch (Exception ex)
  162. {
  163. MessageBox.Show(ex.Message);
  164. return false;
  165. }
  166. }
  167.  
  168. //取消自启动
  169. public static bool CancelSelfStart()
  170. {
  171. try
  172. {
  173. var rk = Registry.LocalMachine;
  174. var softWare = rk.OpenSubKey("SOFTWARE");
  175. var microsoft = softWare.OpenSubKey("Microsoft");
  176. var windows = microsoft.OpenSubKey("Windows");
  177. var current = windows.OpenSubKey("CurrentVersion");
  178. var run = current.OpenSubKey(@"Run", true);
  179. run.DeleteValue("时间同步程序");
  180. return true;
  181. }
  182. catch (Exception ex)
  183. {
  184. MessageBox.Show(ex.Message);
  185. return false;
  186. }
  187. }
  188.  
  189. private void 设置为自启动ToolStripMenuItem1_Click(object sender, EventArgs e)
  190. {
  191. if (SetSelfStart())
  192. {
  193. MessageBox.Show("加入自启动成功", "提示", MessageBoxButtons.OK);
  194. }
  195. }
  196.  
  197. private void 取消自启动ToolStripMenuItem1_Click(object sender, EventArgs e)
  198. {
  199. if (CancelSelfStart())
  200. {
  201. MessageBox.Show("成功取消自启动", "提示", MessageBoxButtons.OK);
  202. }
  203. }

四、程序源代码下载地址

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

C#远程时间同步助手软件设计的更多相关文章

  1. 架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)

    在深入学习zookeeper我想先给大家介绍一个和zookeeper相关的应用实例,我把这个实例命名为远程调用服务.通过对这种应用实例的描述,我们会对zookeeper应用场景会有深入的了解. 远程调 ...

  2. Android远程桌面助手

    很早之前,做过一个<WinCE远程桌面助手>,在没有屏幕或者在调试LCD驱动时,发挥了很大作用,平日开发也是必备.后来还被网友用于处理一些疑难问题,如无法输入开机密码时可通过该工具远程输入 ...

  3. Android远程桌面助手(B1309)

    修改了窗口缩放的处理,支持Android Car等非常规分辨率的Android设备: 修改了获取Android端软件版本的方法,优化了APK的升级逻辑: 优化了远程输入法功能,支持利用PC端输入法快速 ...

  4. Week2 Teamework from Z.XML - 必应缤纷桌面助手 - 软件分析与用户需求调查

    软件分析与用户需求调查(2013) from Z.XML 本次团队作业要求: 通过定性, 定量地分析, 总结和评定某软件是否满足了目标用户的需求,并把分析的过程和结果用博客表达出来. 选题:必应缤纷桌 ...

  5. Ubuntu远程桌面助手(URDC)

    目前自动驾驶域控制器项目中使用了英伟达的Orin芯片+Ubuntu20.04系统.域控属于典型的Headless设备,开发调试时需要连接显示器(HDMI/DP).鼠标和键盘,或者使用NoMachine ...

  6. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  7. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)

    我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...

  8. 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

      邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...

  9. C#软件设计——小话设计模式原则之:依赖倒置原则DIP

    前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...

随机推荐

  1. JQuery------分页插件下载地址

    转载GitHub: https://github.com/pgkk/kkpager

  2. ReportServices如何在一页中将报表分成两列显示

    创建两个数据集 DataSet1    DataSet2 DataSet1 SELECT   TOP                    (SELECT   (COUNT(*) + 1) / 2 A ...

  3. webpack使用的心得

    1 . 我们需要使用打包工具,首先第一步就得 执行 npm install进行安装,可是很多时候 加载速度很慢,这个时候我们可以 用淘宝镜像源,参考地址: p.p1 { margin: 0.0px 0 ...

  4. apache配置 php中没有php5apache2_4.dll

    apache配置 php中没有php5apache2_4.dll 今天,在win7系统下安装Apache+PHP+MySQL时,终于体会到了版本多也不一定是好事,各种不兼容,主要是因为动态包的多少问题 ...

  5. Xshell5 里桌面显示数据调大!!!

    今天告诉大家一个好用的技巧, 在Xshell5下工作,屏幕上很容易积攒数据量,尤其是编译的时候,(当然你编译的时候可以重定向到一个文件中,也可以只重定向编译错误的信息): 这个时候,你想观看之前的编译 ...

  6. vcpu

    qemu_kvm_start_vcpu --> qemu_init_vcpu --> x86_cpu_realizefn -->  x86_cpu_common_class_init ...

  7. 【linux使用】bash shell命令行常用快捷键 (转载)

    移动: Ctrl + A: 移动到当前编辑的命令行首, Ctrl + E: 移动到当前编辑的命令行尾, Ctrl + F 或 ->:按字符右移(往命令行尾部方向,前移) Ctrl + B 或 & ...

  8. java反射(基础了解)

    package cn.itcast_01; /** *Person类 */ public class Person {    /** 姓名 */    private String name;     ...

  9. TKT中文编程语言简介

    TKT中文编程语言简介 TKT语言是新型的类似自然语言的汉语编程语言. 它是基于新的语言设计思想创造的语言,和现存的易语言.习语言.O语言.汉编等中文编程语言没有关系. TKT语言特点一: 中文编程 ...

  10. 兼容8事件绑定与解绑addEventListener、removeEventListener和ie的attachEvent、detachEvent

    兼容8事件绑定与解绑addEventListener.removeEventListener和ie的attachEvent.detachEvent   ;(function(){ // 事件绑定 bi ...