PureBasic
PureBasic
Get Current Date/Time from NIST Time Server
See more Socket/SSL/TLS Examples
Demonstrates using Chilkat Socket to connect to an NIST time server and (using the old Time Protocol (RFC 868)), will read the current GMT time.Note: This is not necessarily the very best means for getting the current date/time. The most commonly used time protocol is the Network Time Protocol (RFC-1305).
Chilkat PureBasic Downloads
IncludeFile "CkDateTime.pb"
IncludeFile "CkSocket.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
socket.i = CkSocket::ckCreate()
If socket.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to an NIST time server and read the current date/time
maxWaitMs.i = 4000
useTls.i = 0
success = CkSocket::ckConnect(socket,"time-c.nist.gov",37,useTls,maxWaitMs)
If success <> 1
Debug CkSocket::ckLastErrorText(socket)
CkSocket::ckDispose(socket)
ProcedureReturn
EndIf
; The time server will send a big-endian 32-bit integer representing
; the number of seconds since since 00:00 (midnight) 1 January 1900 GMT.
; The ReceiveInt32 method will receive a 4-byte integer, but returns
; 1 or 0 to indicate success. If successful, the integer
; is obtained via the ReceivedInt property.
bigEndian.i = 1
success = CkSocket::ckReceiveInt32(socket,bigEndian)
If success <> 1
Debug CkSocket::ckLastErrorText(socket)
CkSocket::ckDispose(socket)
ProcedureReturn
EndIf
dt.i = CkDateTime::ckCreate()
If dt.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkDateTime::ckSetFromNtpTime(dt,CkSocket::ckReceivedInt(socket))
; Show the current local date/time
bLocalTime.i = 1
Debug "Current local date/time: " + CkDateTime::ckGetAsRfc822(dt,bLocalTime)
maxWaitMs = 10
CkSocket::ckClose(socket,maxWaitMs)
CkSocket::ckDispose(socket)
CkDateTime::ckDispose(dt)
ProcedureReturn
EndProcedure