SNTP调试问题

调试基于W5100S网口芯片的SNTP对时程序遇到以下问题;
一.SNTP服务端用wireshark抓包发现收到0x23请求对时命令,但是设备端未收到回复
解决:1. 验证Windows时间服务配置
打开命令提示符(以管理员身份)并输入以下命令,检查和配置Windows时间服务:
w32tm /query /status
这将显示Windows时间服务的当前状态。如果未配置为可靠的时间服务器,执行以下命令:
w32tm /config /manualpeerlist:“time.windows.com” /syncfromflags:manual /reliable:YES /update
net stop w32time
net start w32time
强制同步时间,确保服务正在运行:
w32tm /resync
2. 检查防火墙设置
打开控制面板,进入“系统和安全” > “Windows Defender 防火墙” > “高级设置”。
在入站规则和出站规则中,确保允许UDP 123端口通信:
新建规则 > 端口 > UDP > 特定本地端口:123 > 允许连接 > 配置文件 > 为规则命名并保存。

3. 验证网络连接
确保嵌入式设备和Windows电脑在同一网络中,并且可以互相通信。可以通过以下命令在命令提示符中测试连接:
ping <嵌入式设备的IP地址>
4. 检查NTP服务器日志
如果使用的是第三方NTP服务器软件,检查其日志文件,查看是否有任何错误或警告信息。
5. 确认SNTP请求格式正确
确保嵌入式设备发送的SNTP请求符合RFC 4330规范。SNTP请求的格式不正确也可能导致服务器无法正确响应。
二、收到守时数据解析时间不对
这个问题可能是官方的demo有问题,一般来说从41字节到44字节的4个数据为秒数,减去2208988800秒(NTP时间戳从1900年1月1日开始,而Unix时间戳从1970年1月1日开始,两者之间的偏移量为2208988800秒。)后就是当前UINX时间戳,如果要转换成北京时间用localtime或gmtime,得出的年份要加1900,月份加1。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值