SNTP로 인터넷에서 현재시간 얻어오기

앞서 사용했던 nptlib라는 외부 라이브러리 없이 SNTP라는 프로토콜을 이용하여 인터넷 시간서버에서 현재시간을 가져오는 코드 구현입니다.

  1: import socket
  2: import struct
  3: import sys
  4: import time
  5: 
  6: NTPSERVER = "europe.pool.ntp.org"
  7: TIME1970 = 2208988800L
  8: 
  9: def SNTPCurrentTime() :
 10:   client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 11:   data = '\x1b' + 47 * '\0'
 12:   client.sendto(data, (NTPSERVER, 123))
 13:   data, address = client.recvfrom(1024)
 14: 
 15:   t = struct.unpack('!12I', data)[10]
 16:   t -= TIME1970
 17: 
 18:   print time.ctime(t)
UDP로 소켓 접속을 하고, 프로토콜 데이터 '\x1b' + 47 * '\0'를 패킷에 담아 전송하는데 여기에는 sendto()와 recvfrom() 메써드를 이용해서 데이터를 주고 받습니다. TIME1970은 기준 시간이고, 시간 서버에서 가져온 값에서 이걸 빼줘야 정확한 현재 시간이 나옵니다.  받아온 값은 패킹되어 있으므로 이걸 언팩해줘야 됩니다.

by 케찹만땅 | 2017/04/07 15:08 | ICT 정보와 IoT | 트랙백

트랙백 주소 : http://wpkc.egloos.com/tb/5318523
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
※ 로그인 사용자만 덧글을 남길 수 있습니다.

◀ 이전 페이지          다음 페이지 ▶