개발중에 서로 통신을 할때 시간값이 필요할때가 있다.
NTP서버나 GPS를 통해 실시간으로 동기화해서 사용하는 방법도 있지만
장비들이 고가이다 보니... 그렇게도 못할때가 있다.
그럴땐 뭐 window 자체의 시간 동기화 방법을 써도 상관없지만.......
아무튼 TCP나 UDP등 데이터 전송 시 datetime 정보를 같이 전달하여 시간을 확인하는 방법을 많이 확인하는데
나 같은 경우에는 C#의 Datetime 변수를 이용하기에 DateTime의 tick정보를 가져와서 8 byte long으로 변환하여 데이터를 전달한다.
하지만 이부분도 C#이면 괜찮지만 C로 전달할 시는 해당 부분이 다르다.. C의 경우 유닉스 타임(1970-01-01 00:00:00)을 기준으로 가져오기에 C#의 tick(0000-01-01 00:00:00)과는 다르다.
(참고 : 유닉스 시간 확인하기 https://time.is/ko/Unix_time_now )
그렇기에 C와 C#이 서로 연동한다면 유닉스 기본값의 시간에 해당되는 데이터를 더하거나 빼야하는 과정이 필요하다
유닉스 기본값의 경우 621355968000000000 이 값으로 대신 가능하다.
C에서 C#으로 전달 시 C#에서 유닉스 기본값을 더해준 후 DateTime.parsing 과정이 필요하며
C#에서 C로 전달 시 C에서 유닉스 기본값을 빼준 후 Datetime.parsing 과정이 필요하다.
해당 방법은 추후에 소스를 좀 짜서 포스팅을 해야겠다.
일단 기본적인 방안은 위와 같으며, 실제 구현 시에도 저 유닉스 시간에 해당하는 데이터만 알고 있다면 쉽게 구현 가능하다