DAYTIME 服務
在程式開發語言中,daytime服務的連線埠號是通過網路資料庫函式getserverbyname()確定的,這個函式返回的是關於網路服務方面的資料,它們和主機資料差不多。程式會先嘗試連線指定主機信息資料庫里的地址,如果成功就讀取daytime服務返回的信息,該信息是一個表示UNIX時間和日期的字元串。如果測試平台是Linux桌面作業系統,修改“/etc/xinetd.d/daytime”檔案,將此檔案中兩個disable的值由yes改為no,再重啟計算機即可運行daytime服務。
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:01 PST
注意:對於機器來說,有用的時間採用了時間協定(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)