NTP 授时(Network Time Protocol)核心解读,工控机electron程序自动联网授时案例

最近公司的工控机产品遇到一个问题,工控机是离线使用的,但是客户对于时间要求又比较高,要精确到秒,不能有太大误差。所以怎么能快速授时这个问题一直萦绕在我脑海里...

一、前提描述

公司的应用程序是一个electron开发的桌面端应用程序,安装在windows10系统中,内网使用,不联网,并且没有wifi功能。

二、灵感来源

周末逛商场,看到一个卖家居的大卖场,路过一排时钟的货架,超级多好看的时钟,正在我惊叹于好久没看到这么多精美的时钟的时候,一个二维码赫然出现在我眼前,链接wifi后自动校时的wifi挂钟,手机共享热点也可以完成wifi链接

时钟联网调整时间

我心想,"我靠,我怎么没想到还能有这种操作?"

好吧,其实我之前想到了我们产品能怎么联网调整一下时间,但是思路受限就没有继续往下思考。

视频中是通过wifi进入一个设置网页,实现定时设置时间的。

三、解决思路

我想的是人为定期点击一个按钮,实现一键校准时间的功能:

  • 1、手机通过usb数据线连接工控机usb接口,开启手机USB网络共享功能,让工控机联网
  • 2、在设置界面添加"在线授时"按钮,弹窗提示实现授时流程
  • 3、用户选择NTP服务器点击完成授时

关键点 就是ntp-clientsudo-prompt两个库的使用,ntp-client实现从NTP 服务器获取时间,sudo-prompt实现让Node.js/Electron 程序以「管理员 / 超级用户权限」执行系统命令,解决普通权限下无法操作系统级功能的问题。

遇到的小问题 ,测试过程中发现,命令行手动更新时间失败,原因是错误核心原因:Windows 系统区域 / 语言设置为中文(简体)时,date命令不识别MM-dd-yyyy(月 - 日 - 年)格式(如03-16-2026),中文环境下date命令默认要求「年月日」格式(如2026-03-16),导致执行date 03-16-2026提示 "系统无法接受输入的日期"。

此处关键 :美式区域用MM-dd-yyyy,中文区域用yyyy-MM-dd,月份与日需要前面补0

四、拓展学习NTP 授时(Network Time Protocol)

NTP(网络时间协议)是专门用于在计算机网络中同步所有设备系统时间的标准化网络协议,你可以把它理解成「网络世界的统一时间校准员」------ 解决不同设备(比如你的工控机、手机、服务器)因本地时钟漂移导致的时间不一致问题,是目前互联网最主流、精度最高的时间同步协议。

底层传输:基于 UDP 协议 (无连接、低延迟),固定使用123 端口,这是 IANA 为 NTP 专属分配的端口,所有合规 NTP 服务器都监听这个端口。

我是用的几个ntp服务器地址:

JavaScript 复制代码
//  国内NTP服务器列表(按优先级排序)
const NTP_SERVERS = ['cn.pool.ntp.org', 'ntp1.aliyun.com', 'ntp.ntsc.ac.cn', 'time1.cloud.tencent.com', 'cn.ntp.org.cn'];

总结

随心记录,哈哈

相关推荐
蜡台18 分钟前
Node 安装 awesome-qr 失败解决
javascript·vue·qrcode·awesome-qr
格子软件1 小时前
2026年GEO优化系统源码级状态机与多模型调度拆解
java·前端·vue.js·人工智能·vue·geo
HUMHSX2 小时前
Vue 项目启动全流程解析:从入口文件到全局指令注册与页面渲染
前端·javascript·vue.js
有颜有货2 小时前
PMC生产排产的4种算法,一次讲清
java·服务器·前端
小虎牙0072 小时前
Android kotlin图片库Coil源码详解
android·前端
随风一样自由2 小时前
【前端领域】前端开发核心应用场景与落地实践
前端·前端框架
an317423 小时前
弹窗数据流设计的两种高阶架构实践
前端·vue.js·架构
谢尔登3 小时前
【React】 状态管理方案
前端·react.js·前端框架
用户938515635073 小时前
手把手教你实现一个 MCP 文件读取服务器:从协议到代码的深度解析
javascript·人工智能
用户2136610035723 小时前
Vue商品详情与放大镜组件
前端·javascript