::: {#msgcns!BAC70107D054E892!319 .bvMsg} 看了一段代码,关于SNTP(Simple Network Time Protocol RFC-1769)的Python实现。
SNTP:①
SNTP的消息格式与RFC-1305中所描述的NTP格式是一致的,不同的地方是:一些SNTP的数据域已被封装,也就是说已初始化为一些预定的值。
[ 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|LI | VN |Mode | Stratum | Poll | Precision |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 根延迟 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 根差量 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 参考标识符 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 参考时间戳(64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 原始时间戳(64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 接受时间戳 (64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 传送时间戳(64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| |
| 认证符(可选项) (96) |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]{style="font-family:Courier New;"}
SNTP客户端操作的总结:
[字段名 请求 回答
Li 0 闰秒指示器; 如果是3 (非同步),则放弃该消息
VN 1( 参见正文) 忽略
方式 3( 客户端) 忽略
阶层 0 忽略
轮询 0 忽略
精度 0 忽略
根延迟 0 忽略
根差量 0 忽略
参考标识符 0 忽略
参考时间戳 0 忽略
原始用时间戳 0 忽略( 参见正文)
收到用时间戳 0 忽略( 参见正文)
传送天的时间戳 0 时间; 如果是0 (非同步),则忽略该消息
Authenticator. (不使用) 忽略 ]{style="font-family:Courier New;"}
Python实现:②
请求:
data = 'x1b' + 47 * ''
client.sendto( data, ( ntp_server, 123 )) #UDP
接受解码:
data, address = client.recvfrom( 1024 )
if data:
t = struct.unpack( '!12I', data )[10]
t -= TIME1970
//参考
①中文RFC
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang\@china-pub.com
译者:陈华鹏(shenmusic hpchen\@eastcom.com)
译文发布时间:2001-7-14
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保
留本文档的翻译及版权信息。
②http://download.my-symbian.com/2/uiq/source/NTPConnection.zip
uip下的NTP软件,注释中有一段Python的SNTP实现
//
// NTP connection for symbian by draven \riksa\@medialab.sonera.fi
// Do what ever you wish with these...
//
:::