본문 바로가기
Study/MFC

표준 시간 동기화

by 뿡뿡대마왕 2013. 3. 27.
반응형


표준시간 동기화 방법~


클라이언트의 시간을 주기적으로 동기화 시켜야 하는데 서버로 부터 시간을 받아 처리하려다가 

어차피 서버도 표준시간으로 동기화 하니까 클라이언트로 지 스스로 동기화 하면 될거 같아서 찾아보앗다.

윈도우 시간에 가면 시간동기화하는 기능이 있으니 그런방법으로 처리하면 될 듯하네 찾아보니 역시나 있당 +.+


출처: http://krazie99.tistory.com/7

http://www.codeproject.com/Articles/461/CSNTPClient-An-SNTP-Implementation 


이 시간동기화는 표준 시간(GMT  표준시간)을 그대로 동기화 시켜 버리므로 따로 GMT+9(서울) 같은건 해줄필요가 없다.

윈도우가 알아서 사용자가 설정한 로컬 시간대로 표기해준다. ㅋㅋ

일단 예제코드는 아래와 같이 사용하면 된다.


//소스 가져온곳 : http://blog.naver.com/PostView.nhn?blogId=rapidspeed21&logNo=20158421285&beginTime=0&jumpingVid=&from=search&redirect=Log&widgetTypeCall=truehttp://blog.naver.com/PostView.nhn?blogId=rapidspeed21&logNo=20158421285&beginTime=0&jumpingVid=&from=search&redirect=Log&widgetTypeCall=true#



int xxx::SybcTime()

{

        WSADATA wsaData;

         if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
         {
              AfxMessageBox("winsock Load Fail");
              WSACleanup();
              return -1;
         }

         CSNTPClient sntp;
         NtpServerResponse response;

         CString strUrl;
         strUrl = "time.kriss.re.kr ;// 한국표준과학연구원 타임 서버 -> 난 아래 타임 서버2에서 가져오더라;;(여기서는 실패남)
         if(!sntp.GetServerTime(strUrl, response)) // 서버 시간 가져오기
         {
              strUrl = "time2.kriss.re.kr"; // 한국표준과학연구원 타임 서버 2
              if(!sntp.GetServerTime(strUrl, response))
              {
                   AfxMessageBox("서버 시간 로딩 실패");
                   WSACleanup();
                   return -1;  
              }
         }

         //시스템 시간을 서버 시간 차이를 더해서 동기화 시킨다.

         CNtpTime newTime(CNtpTime::GetCurrentTime() + response.m_LocalClockOffset); 

         if(!sntp.SetClientTime(newTime))
         {
              AfxMessageBox("시간 동기화 실패");
              WSACleanup();
              return -1;
         }


         WSACleanup();


         return 0;

}


정보는 공유되어야 한다.. 쭈욱~~



반응형

댓글