인터넷 연결이 가능한 PC라면 공개 타임 서버를 이용해서 PC 시간을 표준시간으로 동기화 시킬 수 있다. 또한 많은 공개 타임 서버가 있으니 테스트를 통해 빠른 응답의 서버를 선택적으로 사용한다면 무리 없이 적용 가능하다.
NTP(The Network Time Protocol), 타임서버, 표준시간 등에 대한 설명은 이 문서 마지막의 사이트를 참고하면 된다.

[소켓을 이용한 서버 연결]
[요청 전문 전송]
[표준 시간 계산]
[관련사이트]
NTF Home
; http://www.ntp.org
RFC 2030 (SNTP Version4)
; http://www.faqs.org/rfcs/rfc2030.html
RFC 1305 (NTP Version3)
; http://www.faqs.org/rfcs/rfc1305.html
이대부속 초등학교 타임서버
; http://time.ewha.net
; PC와 서버의 표준 시각 설정법 및 시간 관련 많은 설명
SNTP VB 참고 소스
; http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=57675&lngWId=1
; http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=57339&lngWId=1
[첨부파일]
VB 예제 프로그램의 실행 파일
VB 예제 프로그램의 프로젝트 소스 코드
RFC 2030 문서 (SNTP Version4)
RFC 1305 문서 (NTP Version3)
NTP(The Network Time Protocol), 타임서버, 표준시간 등에 대한 설명은 이 문서 마지막의 사이트를 참고하면 된다.

[소켓을 이용한 서버 연결]
' NTP(Version4)는 포트번호 123, UDP 프로토콜을 이용한다.
' NTP Server (http://time.ewha.net/#public_time_server 참고)
' - ntp.ewha.net (이대부속 초등학교)
' - time.windows.com (MS)
Winsock1.Protocol = sckUDPProtocol
Winsock1.RemoteHost = "ntp.ewha.net"
Winsock1.RemotePort = 123
Winsock1.Bind
' NTP Server (http://time.ewha.net/#public_time_server 참고)
' - ntp.ewha.net (이대부속 초등학교)
' - time.windows.com (MS)
Winsock1.Protocol = sckUDPProtocol
Winsock1.RemoteHost = "ntp.ewha.net"
Winsock1.RemotePort = 123
Winsock1.Bind
[요청 전문 전송]
Dim NTPHeader(47) As Byte
NTPHeader(0) = &HB
Winsock1.SendData NTPHeader
' 요청 시간
T1 = GetUTC
NTPHeader(0) = &HB
Winsock1.SendData NTPHeader
' 요청 시간
T1 = GetUTC
[표준 시간 계산]
T4 = GetUTC
Winsock1.GetData sData
Winsock1.Close
' 표준시간은 RFC 2030에 명시된 공식에 의해 계산되었습니다.
For i = 0 To 7
bytTimeStamp(i) = sData(32 + i)
Next
T2 = GetTimeStampToUTC(bytTimeStamp)
For i = 0 To 7
bytTimeStamp(i) = sData(40 + i)
Next
T3 = GetTimeStampToUTC(bytTimeStamp)
d = (T4 - T1) - (T2 - T3)
t = ((T2 - T1) + (T3 - T4)) / 2
CurrTime = t + GetUTC
tmpDate = DateAdd("s", Int(CurrTime) - 2145830400, #1/1/1968#)
st.wMilliseconds = CInt((CurrTime - Fix(CurrTime)) * 1000)
Winsock1.GetData sData
Winsock1.Close
' 표준시간은 RFC 2030에 명시된 공식에 의해 계산되었습니다.
For i = 0 To 7
bytTimeStamp(i) = sData(32 + i)
Next
T2 = GetTimeStampToUTC(bytTimeStamp)
For i = 0 To 7
bytTimeStamp(i) = sData(40 + i)
Next
T3 = GetTimeStampToUTC(bytTimeStamp)
d = (T4 - T1) - (T2 - T3)
t = ((T2 - T1) + (T3 - T4)) / 2
CurrTime = t + GetUTC
tmpDate = DateAdd("s", Int(CurrTime) - 2145830400, #1/1/1968#)
st.wMilliseconds = CInt((CurrTime - Fix(CurrTime)) * 1000)
[관련사이트]
NTF Home
; http://www.ntp.org
RFC 2030 (SNTP Version4)
; http://www.faqs.org/rfcs/rfc2030.html
RFC 1305 (NTP Version3)
; http://www.faqs.org/rfcs/rfc1305.html
이대부속 초등학교 타임서버
; http://time.ewha.net
; PC와 서버의 표준 시각 설정법 및 시간 관련 많은 설명
SNTP VB 참고 소스
; http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=57675&lngWId=1
; http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=57339&lngWId=1
[첨부파일]
VB 예제 프로그램의 실행 파일
VB 예제 프로그램의 프로젝트 소스 코드
RFC 2030 문서 (SNTP Version4)
RFC 1305 문서 (NTP Version3)
NTP.exe
NTP.zip
rfc2030.txt.pdf
PC시간을 인터넷 시간 서버와 동기화 (표준시간으로 설정).ppt
댓글을 달아 주세요