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

获取北京时间     ///<summary>         /// 获取标准北京时间1         ///</summary>         ///<returns></returns>         ///<summary>         public static DateTime GetStandardTime()         ... 阅读详情

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.youkuaiyun.com/detail/coderjyf/9545672


C# 控制电脑本地时间修改 这两天项目要做TDOA算法,前提需要时钟同步,甲方客户部署环境是不联网的,需要通过GPS进行更新电脑时间,从网上看了很多方法,但是我这边都不成功,需要管理员权限,问了师父,我是修改了电脑的管理员权限,安全性会有影响,大家仅供参考 这是方法一:这是调用API文档直接实现的 [StructLayout(LayoutKind.Sequential)] public struct Systemtime { public ushort wYear; ... 阅读详情

相关推荐

汽车电子与工业控制:多协议总线检测台集成应用与测试实践

在嵌入式系统与汽车电子领域,控制器局域网(CAN)和本地互联网络(LIN)等总线协议是实现设备间可靠通信的基石。其工作原理基于分布式、事件驱动的消息传递机制,确保了在复杂电磁环境下的数据完整性与实时性。这些技术的核心价值在于为现代汽车的电子控制单元(ECU)、工业自动化设备构建了稳定、高效的神经脉络。从车载网络诊断到工业控制系统的调试,对多种总线协议进行同步捕获、解析与测试是提升开发效率、保障系统稳定的关键。本文聚焦于集成CAN、CAN FD、LIN、SIF、SENT等多种主流协议的硬件测试平台,深入探讨其

weixin_33796177的博客 412

C#与NTP服务端时间同步(客户端与服务端时间同步问题)

原因 很多种业务需求,要客户端与服务端的时间同步,比如在交易状态,需要验证客户端与服务端的时间,比如集群,比如记录文件安全 、审查和监控,文件时间戳,存取安全与确认等等,总之用处多多 NTP时间服务器 NTP时间服务器:Network Time Protocol 作用:用来给其他主机提供时间同步服务,在搭建服务器集群的时候,需要保证在各个节点时间一致。 上客户端代码 public void get...

weixin_40899924的博客 5314

硬件工程师面试问题(九):CAN面试问题与详解

CAN协议是汽车电子与工业控制的核心通信标准,其掌握程度直接反映候选人对实时性、可靠性和分布式系统的理解。面试中,深入考察CAN技术细节(如仲裁机制、错误处理、CAN FD)能有效评估实际项目经验与故障排查能力。随着智能驾驶与物联网的发展,精通CAN协议成为嵌入式工程师的关键竞争力,确保候选人具备设计高可靠通信系统及应对复杂场景的专业素养。

qq_41898507的博客 2182

C#同步网络时间和本地时间

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Net; using System.Net.Sockets; using System.Text.RegularExpressions;

戮筱沫博客 3575

TMS320F28379D远程控制:以太网通信与JSON协议实践

嵌入式系统远程监控是工业自动化与物联网应用中的关键技术,其核心在于建立稳定、高效的设备与上位机间通信链路。通过以太网、CAN、串口等物理接口,结合TCP/IP等网络协议栈,可以实现数据的可靠传输与实时交互。在资源受限的嵌入式端,合理选择应用层协议至关重要,自定义帧结构配合JSON数据格式,在可读性、扩展性与解析效率之间取得了良好平衡。本文以TI TMS320F28379D DSP为例,详细阐述了基于以太网与lwIP协议栈实现远程控制的完整方案,涵盖了从底层驱动移植、自定义协议设计、JSON解析集成到上位机软

weixin_33769125的博客 299

高频读写器软件架构设计与开发实战:从RFID原理到物联网应用

RFID(射频识别)技术通过无线电波实现非接触式数据采集,其核心原理基于读写器与电子标签之间的电磁耦合通信。在物联网系统中,高频读写器软件作为连接硬件与业务的关键中间层,负责设备控制、数据采集、协议解析与业务处理,其技术价值在于将原始射频信号转化为可用的业务数据。该软件广泛应用于仓储物流、智能制造、无人零售等场景,通过多设备管理、实时数据处理和天线信号处理等核心模块,实现对RFID标签的高效读写与业务集成。本文聚焦高频读写器软件的系统架构与工程实践,深入探讨设备接入层抽象、数据处理层优化及与WMS/MES系

靓靓软件工作室 631

ESP32离线定时控制系统:基于DS3231 RTC与Web界面的可靠方案

实时时钟(RTC)是嵌入式系统中实现精准独立计时的核心组件,其原理是通过专用芯片和后备电池,在主系统断电时仍能持续走时。在物联网和自动化控制领域,RTC技术为设备提供了不依赖网络的时间基准,保障了定时任务的可靠执行。结合ESP32的Wi-Fi能力与异步Web服务器,可以构建一套离线优先、网络可配的定时控制系统。该方案通过DS3231高精度RTC芯片确保计时可靠性,利用AsyncWebServer实现非阻塞的Web交互,并借助LittleFS存储前端界面。这种技术组合特别适用于农业自动化、智能家居等需要关键定

weixin_34314962的博客 406

C# NTP 时钟同步 获取指定IP系统时间

1、SNTP时钟同步,获取指定IP主机系统时间并设置本地时间的程序源码。 2、客户端调用方法。 3、winXP及win7下开启NTP服务方法.pdf 4、NTP协议格式(中文).doc

C# Winform小程序:局域网设置NTP服务器、实现时间同步

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。局域网不能连接Internet,可以设置一台计算机为NTP服务器。

程序人生的博客 2137

timesync具好的系统时间同步软件

timesync具好的系统时间同步软件,主板掉电,时间恢复成出厂日期,拿这个软件可以修复,在电脑系统启动自动同步成正确时间。

黑苹果双系统时间同步100%解决方案

安装完黑苹果之后,bios的时间是不动了。永远停留在关机时间,而且win开机几个小时后,时间莫名奇妙慢了很多。网友说可以用从U盘启动ubuntu,让bios时间又正常起来,但是切换到黑苹果,bios又不动了。现在提供解决方法 下载附件的timesync.exe ,是我写的C程序,功能只是从windows.time 同步一次时间 按照下面步骤: 1.开启时间自动同步,通过修改注册表,设置同步间隔为半小时。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval SpecialPollInterval=1800 2.开启windows time 的服务 3.复制timesync.exe到C盘根目录,右键创建快捷方式。点击创建的快捷方式-右键-高级-勾选以管理员身份运行 创建一个文本文件,autorun.bat 里面就一行: start /min c:\timeSync.exe.lnk 修改注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 新建字符串值 timesync 数据=c:\autorun.bat 即可 第1,2点是为了让时间不会变慢,第3点保证开机时间就同步。不用等半个小时. 以上可100%解决黑苹果时间同步问题。

简版网络时间服务(SNTP)的实现C#

/// <summary> /// 简单网络时间协议服务器 /// </summary> public class SNTPServer { int port = 123; //服务端口,NTP默认端口123 bool stopFlag = false; //通知后台...

八两的博客 1978

C# winfrom 同步NTP时间

自己写的基于C#本地电脑同步NTP服务器的时间。

C#实现的客户端同步服务器时间管理工具类

今天做项目的时候遇到了一个问题,即客户端程序通过一个接口从后台获取到一个服务器时间后,需要在客户端的右下角实时展示服务器时间,并且要提供函数供客户端内的功能随时获取当前的服务器时间。 在这种情况下,每次都调用前后台接口获取服务器时间显然是不显示的,为此我想出了一个方法。 先定义几个概念: ...

1024

【数学模型】灰色关联分析

数学模型-灰色关联分析

suic009的博客 1万+

计算机模拟爆破过程,基于LSDYNA岩石爆破模拟建模分析

原标题:基于LSDYNA岩石爆破模拟建模分析 Ls Dyna岩石爆破模拟仿真作者:dyna_focus擅长领域:dyna/abaqus/hypermesh一、 数值模型的建立1.1 单元及算法的选择岩石,炸药,空气都采用solid164实体单元。岩石采用常应力实体单元,该种单元属于纯粹的lagrange算法,该种算法单元网格附着在材料上,随着材料的流动而产生单元网格的变形,但是在结构变形巨大时,有...

weixin_29494379的博客 7317

时间同步-Chrony

该命令会显示有多少 NTP 源在线/离线。可以查看更多 chronyc 的交互命令。检查 NTP 访问是否对特定主机可用。手动移除 NTP 服务器或对等服务器。手动添加一台新的 NTP 服务器。在客户端报告已访问到服务器。手动设置守护进程时间。

770

告别标注地狱!YOLO+CLIP多模态零样本检测全实战:图文联合推理,想检测什么直接输文字,不用训模型

这套方案我给朋友的超市用了快3个月,运行极其稳定,临期商品的检测准确率能到96%,后续加了“货架空货检测”“通道杂物堆积检测”,都是改一行文本就搞定,完全不用重新开发,朋友说省了十几万的定制开发费用。很多做计算机视觉的朋友,总觉得目标检测必须标数据、训模型,其实不是的。现在多模态大模型的能力已经足够强,把YOLO的定位能力和CLIP的图文泛化能力结合起来,就能用极低的成本,搞定绝大多数定制化检测需求。对于我们开发者来说,技术的价值从来不是炫技,而是用最简单的方案,解决最实际的问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 517

C#同步网络时间

来自:http://my.youkuaiyun.com/jocce_11/code/detail/35369 主要是抓取:http://www.beijing-time.org/time.asp 的时间 01.usingSystem;    02.usingSystem.Collections.Generic;    03.usingSystem.Linq;    04

码农 694

LSTM 深度解析从原理推演到现代序列建模的演进

LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的递归神经网络(RNN),它通过引入记忆单元(Cell State)来解决普通RNN在长序列数据处理中的梯度消失问题。LSTM可以在长时间的序列中捕捉依赖关系,是一种非常适合处理时间序列、自然语言处理、语音识别等任务的深度学习模型。在LSTM中,记忆单元(Cell State)是一个贯穿整个序列的数据通道,用于存储和传递关键信息。记忆单元在LSTM的时间步之间保持信息的持久性,可以看作是一个长期记忆的“容器”。

hello.reader 3万+

抖音无水印视频爬虫实战:从抓包分析到批量下载指定用户作品

抖音作为当前最受欢迎的短视频平台,拥有海量的优质内容。很多用户希望备份自己或他人的作品,但抖音官方并未提供批量下载功能,且直接下载的视频带有平台水印。本文将带领大家从零开始,通过抓包分析、设备模拟、请求签名等核心技术,实现一个完整的抖音无水印视频爬虫系统。本文仅供技术学习和个人备份使用,请勿将爬取的内容用于商业用途或侵犯他人版权,爬取频率请控制合理范围内。目录一、前言二、技术栈概览三、准备工作3.1 环境搭建3.2 抓包分析步骤3.3 关键API发现四、核心技术解密4.1 X-Gorgon签名算法。

2201_76125261的博客 847

内网电脑服务器时间修改,局域网内,用C#实现本地电脑获取服务器系统时间,并更新到本地电脑...

//从本机获取服务器时间SNTPTimeClient client = new SNTPTimeClient("10.0.5.126", "123");///////填写你想要的获取时间的主机的IP和端口;client.Connect();DateTime getEd = client.ReceiveTimestamp;//获取指定IP的系统时间SystemTime st = new System...

weixin_39655160的博客 1036

基于OpenCV和Dlib的头部姿态估计详细教程

本文详细介绍了基于OpenCV和Dlib的头部姿态估计方法。通过分析2D人脸特征点与3D头部模型的对应关系,利用PnP(Perspective-n-Point)算法求解头部在三维空间中的姿态。文章首先阐述了坐标系统转换原理,包括世界坐标系、相机坐标系和图像坐标系的转换关系,随后深入讲解了PnP问题的数学表述及求解步骤,并提供了使用Dlib检测68个面部特征点的代码示例。最后介绍了3D通用头部模型的构建方法,包括6点和14点模型的选择,为计算机视觉中的头部姿态估计提供了完整的技术实现方案。

FJN110的博客 338
上一篇: Win7+Ubuntu双系统安装完成后时间不一致相差大概8小时
下一篇: 安装.NET FRAMEWORK 4.5安装进度条回滚之后发生严重错误 代码0x80070643
JiYF
博客等级 码龄11年 356粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值