표준시간 동기화 방법~
클라이언트의 시간을 주기적으로 동기화 시켜야 하는데 서버로 부터 시간을 받아 처리하려다가
어차피 서버도 표준시간으로 동기화 하니까 클라이언트로 지 스스로 동기화 하면 될거 같아서 찾아보앗다.
윈도우 시간에 가면 시간동기화하는 기능이 있으니 그런방법으로 처리하면 될 듯하네 찾아보니 역시나 있당 +.+
출처: 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;
}
정보는 공유되어야 한다.. 쭈욱~~
'Study > MFC' 카테고리의 다른 글
CListCtrl에서 속성 값에 대한 정의 (0) | 2013.09.30 |
---|---|
화면 보호기 설정(Screensaver) MFC, API (0) | 2013.07.17 |
ON_MESSAGE_VOID, ON_MESSAGE, 그리고 SendMessage (0) | 2012.11.21 |
자식창 움직이면 부모창도 같이 움직이게 하기 (0) | 2012.10.18 |
Use MFC in a Shared DLL과 Use MFC in a Static Library (0) | 2012.08.27 |
댓글