加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

使用sntp从服务器获取时间/日期(windows c)

发布时间:2020-12-14 01:56:04 所属栏目:Windows 来源:网络整理
导读:我在c / c中搜索一个工作代码,它从服务器获取时间和日期(ntp.belnet.be).它适用于UDP并使用端口123. 有人可以帮忙吗? //sending pakketmemset(sntp_msg_header,sizeof sntp_msg_header);sntp_msg_header.flags = 27;sntp_msg_header.originate_timestamp_se
我在c / c中搜索一个工作代码,它从服务器获取时间和日期(ntp.belnet.be).它适用于UDP并使用端口123.

有人可以帮忙吗?

//sending pakket
memset(&sntp_msg_header,sizeof sntp_msg_header);
sntp_msg_header.flags = 27;
sntp_msg_header.originate_timestamp_secs = time(NULL);

// Get data in rxmsg
...
...

// print time
timeval = ntohl(rxmsg.transmit_timestamp_secs) - ((70ul * 365ul + 17ul) * 86400ul);
printf("%s",ctime(&timeval));

这就是我到目前为止所拥有的.但我无法从中获得正确的数据.
我希望这是更多的信息.

如果发现这个:

import socket
import struct
import sys
import time

TIME1970 = 2208988800L      # Thanks to F.Lundh

client = socket.socket( socket.AF_INET,socket.SOCK_DGRAM )
data = 'x1b' + 47 * ''
client.sendto( data,( sys.argv[1],123 ))
data,address = client.recvfrom( 1024 )
if data:
    print 'Response received from:',address
    t = struct.unpack( '!12I',data )[10]
    t -= TIME1970
    print 'tTime=%s' % time.ctime(t)

但它是在python中.有人可以将此更改为c或是否有转换器?

解决方法

这就是我使用的.它不是很优雅,但应该足以让这个想法得以实现.基本思想是拥有一个与网络发送和接收的结构相匹配的结构.反向字节序最初并不明显.值得一提的是,这几乎没有对错误条件有用.你想解决这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读