Search

[CPP] NTP Sync LocalClockOffset

Programming/C,CPP,CS 2019. 12. 23. 23:52 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[CPP] NTP Sync LocalClockOffset

 

NTP 는

 

Network Time Protocol 으로 네트워크를 통해 시간을 동기화 하는 프로토콜입니다.

 

NTP 서버 시간에 클라이언트 시간을 맞추기 위한 프로토콜입니다.

 

 

 

[현재 시점] 서버의 현재 시간과 클라이언트의 현재 시간이 다를 수 있고,

 

[지속 되는 상태] 서버의 1초와 클라이언트의 1초가 다를 수 있습니다.

 

 

 

서버 혹은 클라이언트간 시간이 아주 중요한 프로그램에서는

 

NTP 는 한번만 수행하는 것이 아닌 지속적으로 수행하여 동기화 하게 됩니다.

 

 

 

 

 

서버와 클라이언트의 시간 차이를 LocalClockOffset 으로 표기합니다.

 

 

 

 

여러 클라이언트의 시간을

 

NTP서버와 동기화하여

 

각 클라이언트간 시간이 동기화 하도록 하기 위해 사용 되는 값이 offset 입니다.

 

 

 

계산 식은

Timestamp Name ID When Generated

------------------------------------------------------------

Originate Timestamp T1 time request sent by client      C1

Receive Timestamp T2 time request received by server  S1

Transmit Timestamp T3 time reply sent by server         S2

Destination Timestamp T4 time reply received by client C2

 

The roundtrip delay d and system clock offset t are defined as:

 

d = (T4 - T1) - (T3 - T2)

t = ((T2 - T1) + (T3 - T4)) / 2.

t = ((S1 - C1) + (S2 - C2)) / 2.

 

여기서

 

 

 

 

여기서 서버와 클라리언트가 패킷을 주고 받는데 걸리는 딜레이(delay1, delay2)는 같다고 가정한다.

 

 

 

 

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

using System.Diagnostics;



Stopwatch sw = new Stopwatch();


sw.Start();





// TODO






sw.Stop();






MessageBox.Show(sw.ElapsedMilliseconds.ToString() + "ms");



MessageBox.Show(sw.Elapsed.Hour.ToString() + "Minute");

MessageBox.Show(sw.Elapsed.Minute.ToString() + "Minute");

MessageBox.Show(sw.Elapsed.Second.ToString() + "Minute");







CDateTimeCtrl 사용법

Programming/C,CPP,CS 2016. 8. 25. 17:56 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

CDateTimeCtrl 사용법



이름

설명

CDateTimeCtrl::CloseMonthCal

현재 날짜 및 시간 선택 컨트롤을 닫습니다.

CDateTimeCtrl::Create

날짜 및 시간 선택 컨트롤을 만들고이에 연결 된 CDateTimeCtrl 개체입니다.

CDateTimeCtrl::GetDateTimePickerInfo

현재 날짜 및 시간 선택 컨트롤에 대 한 정보를 검색합니다.

CDateTimeCtrl::GetIdealSize

현재 날짜나 시간을 표시 하는 데 필요한 시간 및 날짜 선택 컨트롤의 이상적인 크기를 반환 합니다.

CDateTimeCtrl::GetMonthCalColor

월 달력에서 날짜 및 시간 선택 컨트롤의 특정된 부분에 대 한 색을 검색합니다.

CDateTimeCtrl::GetMonthCalCtrl

검색은 CMonthCalCtrl 개체의 날짜 및 시간 선택 컨트롤에 연결 합니다.

CDateTimeCtrl::GetMonthCalFont

현재 날짜 및 시간 선택 컨트롤의 자식 컨트롤에서 사용 되는 글꼴을 검색 합니다.

CDateTimeCtrl::GetMonthCalStyle

현재 날짜 및 시간 선택 컨트롤의 스타일을 가져옵니다.

CDateTimeCtrl::GetRange

현재 최소 및 최대 허용 시스템 시간 날짜 및 시간 선택 컨트롤을 검색 합니다.

CDateTimeCtrl::GetTime

날짜 및 시간 선택 컨트롤에서 현재 선택한 시간을 검색 하 고 지정 된 배치 SYSTEMTIME 구조.

CDateTimeCtrl::SetFormat

지정 된 형식 문자열에 따라 날짜 및 시간 선택 컨트롤의 표시를 설정합니다.

CDateTimeCtrl::SetMonthCalColor

월 달력에서 날짜 및 시간 선택 컨트롤의 특정된 부분에 대 한 색을 설정합니다.

CDateTimeCtrl::SetMonthCalFont

날짜 및 시간 선택 컨트롤의 자식 컨트롤을 사용 하는 글꼴을 설정 합니다.

CDateTimeCtrl::SetMonthCalStyle

현재 날짜 및 시간 선택 컨트롤의 스타일을 설정합니다.

CDateTimeCtrl::SetRange

날짜 및 시간 선택 컨트롤에 대 한 최소 및 최대 허용 된 시스템 시간을 설정합니다.

CDateTimeCtrl::SetTime

날짜 및 시간 선택 컨트롤에는 시간을 설정합니다.




// set with a CTime
CTime timeTime(1998, 4, 3, 0, 0, 0);
VERIFY(m_DateTimeCtrl.SetTime(&timeTime));

// set with a COleDateTime object
COleDateTime oletimeTime(1998, 4, 3, 0, 0, 0);
VERIFY(m_DateTimeCtrl.SetTime(oletimeTime));

// set using the SYSTEMTIME
SYSTEMTIME sysTime;
memset(&sysTime, 0, sizeof(sysTime));
sysTime.wYear = 1998;
sysTime.wMonth = 4;
sysTime.wDay = 3;
VERIFY(m_DateTimeCtrl.SetTime(&sysTime));
void CDateTimeDlg::OnBnClickedTimebutton()
{
   // get as a CTime
   CTime timeTime;
   DWORD dwResult = m_DateTimeCtrl.GetTime(timeTime);
   if (dwResult == GDT_VALID)
   {
      // the user checked the box and specified data
      CString str;

      // is it a time-only control, or a date-only control?
      if ((m_DateTimeCtrl.GetStyle() & DTS_TIMEFORMAT) == DTS_TIMEFORMAT)
         str = timeTime.Format(_T("%X"));
      else
         str = timeTime.Format(_T("%x"));
      AfxMessageBox(str);
   }
   else
   {
      // the user unmarked the "none" box
      AfxMessageBox(_T("Time not set!"));
   }

   // Calling as SYSTIME is much the same, but calling for a COleDateTime
   // has us test the state of the COleDateTime object for validity to 
   // see if the user did or didn't check the "none" box.
}











mysql table datetime tip

Programming/JAVA,JSP 2014. 10. 20. 12:54 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


인스턴스 게시판을 만들던 도중


게시판에 글을 게시한 시간과 게시글을 수정한 시간을 표기하고자 하였다.



auto_increment 옵션을 주면 id가 자동으로 증가되면서 부여되듯이


시간도 insert, update 한 시점이 자동으로 업데이트되는 기능이 있을거라 생각하여 검색했다.



아래의 sql 문을 활용하면 insert, update 시 해당 컬럼이 자동으로 업데이트 된다.



작성일 DATETIME DEFAULT CURRENT_TIMESTAMP,
수정일 DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

'Programming > JAVA,JSP' 카테고리의 다른 글

Java Server/Client Code  (2) 2015.11.12
[Spring] 한글 인코딩 설정  (0) 2015.10.29
JSP, MYSQL, ECLIPSE 연동하기  (0) 2014.10.12
Java Chatting Server, Client  (0) 2014.07.12
JScrollPane , ScrollPane 차이점  (0) 2014.07.12