DAYTIME
DAYTIME
DAYTIME這種時間傳輸協議廣泛的被運行MS-DOS和類似的操作系統的小型計算機使用,該協議不指定固定的傳輸格式,只要求按照ASCII標準發送數據。
在程序開發語言中,daytime服務的埠號是通過網路資料庫函數getserverbyname()確定的,這個函數返回的是關於網路服務方面的資料,它們和主機資料差不多。程序會先嘗試連接指定主機信息資料庫里的地址,如果成功就讀取daytime服務返回的信息,該信息是一個表示UNIX時間和日期的字元串。如果測試平台是Linux桌面操作系統,修改“/etc/xinetd.d/daytime”文件,將此文件中兩個disable的值由yes改為no,再重啟計算機即可運行daytime服務。
Daytime協議(RFC867 Daytime Protocol)
本RFC規範了一個ARPA Internet community上的標準。在ARPA Internet上的所有主機應當採用和實現這個標準。
一個有用的測量和調試工具就是daytime服務。它的作用就是返回當前時間和日期,格式是字元串格式。
基於TCP的daytime服務
daytime服務是基於TCP的應用,伺服器在TCP埠13偵聽,一旦有連接建立就返回ASCII形式的日期和時間(接收到的任何數據被忽略),在傳送完后關閉連接。
基於UDP的daytime服務
daytime服務也可以使用UDP協議,它的埠也是13,不過UDP是用數據報傳送當前時間的。接收到的數據被忽略。
Daytime格式
對於daytime沒有特定的格式,建議使用ASCII可列印字元,空格和回車換行符。daytime應該在一行上。
下面是兩種流行的格式:
一種流行的格式是:Weekday, Month Day, Year Time-Zone
例子:Tuesday, February 22, 1982 17:37:43-PST
另一種流行的格式用於SMTP中:dd mmm yy hh:mm:ss zzz
例子:02 FEB 82 07:59:01PST
注意:對於機器來說,有用的時間採用了時間協議(Time Protocol RFC-868)
接下來我們用VB程序實現通過RFC867協議設置我們自己的計算機系統時間,為使程序簡化,程序未進行日期校正,只進行時間校正。在FORM1中添加1個Winsock控制項,將下面代碼剪貼到FORM1的代碼窗體中即可:
Option Explicit
'採用RFC867 Daytime協議獲取標準時間常式
中科院國家授時中心,採用北京時間
'時間格式:Mon Jul 26 09:58:57 2004
美國標準技術院,採用格靈威時間
'時間格式:53212 04-07-26 02:00:12 50 0 0 488.3 UTC(NIST) *
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)