海萤物联网ntp服务上线

发布时间:2026/10/3 23:40:35
海萤物联网ntp服务上线 文章目录海萤物联网ntp服务上线开源介绍服务读取时间服务1读取时间服务2.返回的是结构体自定义错误码示例读取时间读取时区为2的时间读取时区为-6的时间读取结构体格式时间源码main.goconfig.go海萤物联网ntp服务上线本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.在线文档地址开源github上的项目地址gitee上的项目地址介绍基于Golang编写在海萤物联网提供校时服务。本机地址是0x2141000000000404服务服务号服务1读取时间12读取时间2.返回的是结构体读取时间服务1CON请求空或者带符号的1个字节。当CON请求为空时则默认为读取的是北京时间时区8。也可以带1个字节表示时区号。这个字节是有符号的int8。小技巧可以使用0x100减去正值即负值。比如8对应的无符号数是0x100-8248。ACK应答当前时间的字符串当前时间字符串的格式2006-01-02 15:04:05 -0700 MST读取时间服务2.返回的是结构体CON请求格式与读取时间服务1一致ACK应答struct{// 时区uint8 TimeZone uint16 Year uint8 Month uint8 Day uint8 Hour uint8 Minute uint8 Second// 星期uint8 Weekday}自定义错误码错误码含义0x40内部错误0x41接收格式错误示例读取时间resp,err:tziot.Call(pipe,0x2141000000000004,1,1000,[]uint8{})fmt.Println(err:,err,time:,string(resp))输出err: 0 time: 2021-03-20 06:34:18 0800 CST读取时区为2的时间resp,err:tziot.Call(pipe,0x2141000000000004,1,1000,[]uint8{2})fmt.Println(err:,err,time:,string(resp))输出err: 0 time: 2021-03-20 00:36:31 0200 CST读取时区为-6的时间resp,err:tziot.Call(pipe,0x2141000000000004,1,1000,[]uint8{0x100-6})fmt.Println(err:,err,time:,string(resp))输出err: 0 time: 2021-03-19 16:36:06 -0600 CST读取结构体格式时间resp,_:tziot.Call(pipe,0x2141000000000004,2,3000,[]uint8{8})varack AckRidGetTime2_dcom.BytesToStruct(resp,ack)fmt.Println(ack)输出{8 2021 3 30 12 11 28 2}源码最新源码请查看仓库。main.go// Copyright 2021-2021 The jdh99 Authors. All rights reserved.// 网络校时服务// Authors: jdh99 jdh821163.compackagemainimport(github.com/jdhxyy/dcomgithub.com/jdhxyy/lagangithub.com/jdhxyy/tziotntp/configtime)consttagntp// 应用错误码const(// 内部错误errorCodeInternalError0x40// 接收格式错误errorCodeRxFormat0x41)// rid号const(// 读取时间.返回的是字符串ridGetTime11// 读取时间.返回的是结构体ridGetTime22)// ACK格式typeAckRidGetTime2struct{// 时区TimeZoneuint8Yearuint16Monthuint8Dayuint8Houruint8Minuteuint8Seconduint8// 星期Weekdayuint8}funcmain(){err:lagan.Load(0)iferr!nil{panic(err)}lagan.EnableColor(true)lagan.SetFilterLevel(lagan.LevelInfo)_,errtziot.BindPipeNet(config.LocalIA,config.LocalPwd,config.LocalIP,config.LocalPort)iferr!nil{panic(err)return}tziot.Register(ridGetTime1,ntpService1)tziot.Register(ridGetTime2,ntpService2)select{}}// ntpService1 校时服务// 返回值是应答和错误码.错误码为0表示回调成功,否则是错误码funcntpService1(pipeuint64,srcIAuint64,req[]uint8)([]uint8,int){addr:dcom.PipeToAddr(pipe)vartimeZoneintiflen(req)0{timeZone8}elseiflen(req)1{timeZoneint(int8(req[0]))}else{lagan.Warn(tag,addr:%v ia:0x%x ntp failed.len is wrong:%d,addr,srcIA,len(req))returnnil,errorCodeRxFormat}t:getTime(timeZone)lagan.Info(tag,addr:%v ia:0x%x ntp time:%v,addr,srcIA,t)return[]uint8(t.Format(2006-01-02 15:04:05 -0700 MST)),0}funcgetTime(timeZoneint)time.Time{t:time.Now().UTC()secondsEastOfUTC:int((time.Duration(timeZone)*time.Hour).Seconds())loc:time.FixedZone(CST,secondsEastOfUTC)tt.In(loc)returnt}// ntpService2 校时服务// 返回值是应答和错误码.错误码为0表示回调成功,否则是错误码funcntpService2(pipeuint64,srcIAuint64,req[]uint8)([]uint8,int){addr:dcom.PipeToAddr(pipe)vartimeZoneintiflen(req)0{timeZone8}elseiflen(req)1{timeZoneint(int8(req[0]))}else{lagan.Warn(tag,addr:%v ia:0x%x ntp failed.len is wrong:%d,addr,srcIA,len(req))returnnil,errorCodeRxFormat}t:getTime(timeZone)lagan.Info(tag,addr:%v ia:0x%x ntp time:%v,addr,srcIA,t)varack AckRidGetTime2 ack.TimeZoneuint8(timeZone)ack.Yearuint16(t.Year())ack.Monthuint8(t.Month())ack.Dayuint8(t.Day())ack.Houruint8(t.Hour())ack.Minuteuint8(t.Minute())ack.Seconduint8(t.Second())ack.Weekdayuint8(t.Weekday())data,err:dcom.StructToBytes(ack)iferr!nil{lagan.Error(tag,addr:%v ia:0x%x ntp failed.struct to bytes error:%v,addr,srcIA,err)returnnil,errorCodeInternalError}returndata,0}config.go// Copyright 2021-2021 The jdh99 Authors. All rights reserved.// 配置文件// Authors: jdh99 jdh821163.compackageconfigimportfmt// 系统参数const(LocalIA0x2141000000000004LocalIP0.0.0.0LocalPort12930)varLocalPwdstringfuncinit(){fmt.Println(please input password:)_,err:fmt.Scanln(LocalPwd)iferr!nil{panic(err)}}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询