MINZKN의 블로그 http://www.minzkn.com/
BLOG main image

전체 (421)
minzkn™ (63)
Programming (276)
사용법/팁 (26)
타국에서 (15)
사진 (1)
퍼온글 (39)
조사 (0)
낙서장 (0)
서식/Template (0)
비밀글 (0)
Total : 270632
Today : 100
Yesterday : 188
6명이 RSS를 구독하고 있습니다.
rdate 명령과 흡사하게 구현하기
Programming/Network | 2007/05/08 12:19
2007/05/08 12:19 2007/05/08 12:19
span class=postbody이것은 UNIX 명령어중에서 rdate 명령을 흉내내는 예제입니다. br / 최대한 비슷하게 만들었습니다. br / br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb코드:/b/span/td /tr tr td class=code br / /* br / Copyright (c) 2002 Information Equipment co.,LTD. br / All Right Reserved. br / br / Code by JaeHyuk Cho lt;minzkn@infoeq.co.krgt; br / br / This example !!! br / nbsp; nbsp;- Simple is best. br / nbsp; nbsp;- Reference RFC 868nbsp; nbsp; nbsp; nbsp;-gt; See http://rfc.sunsite.dk br / */ br / br / #if defined(WIN32) br / #include lt;windows.hgt; br / #else br / #include lt;stdio.hgt; br / #include lt;string.hgt; br / #include lt;sys/types.hgt; br / #include lt;unistd.hgt; br / #include lt;fcntl.hgt; br / #include lt;time.hgt; br / #include lt;sys/socket.hgt; br / #include lt;netinet/in.hgt; br / #include lt;netdb.hgt; br / #endif br / br / #define DEF_RFC_868_CORRESPOND_VALUEnbsp; nbsp; (2208988800lu) /* 00:00:00 1 JAN 1970 GMT */ br / #define DEF_RFC_868_TIMESERVER_TCP_PORT (37) br / #define DEF_RFC_868_TIMESERVER_UDP_PORT (37) br / br / int main(int s_Argc, char *s_Argv[]); br / br / static time_t MZ_GetRemoteTime(const char *s_TimeServer) br / { br / unsigned long s_Return = 0lu;nbsp; nbsp; br / int s_Socket; br / struct sockaddr_innbsp; s_SocketAddress_In; br / struct hostentnbsp; nbsp; nbsp;*s_HostEntry; br / s_HostEntry = gethostbyname(s_TimeServer); br / if(s_HostEntry) br / { br / nbsp; memset((void *)(amp;s_SocketAddress_In), 0, sizeof(s_SocketAddress_In));nbsp; nbsp; br / nbsp; s_SocketAddress_In.sin_family = AF_INET; br / nbsp; s_SocketAddress_In.sin_port = htons(DEF_RFC_868_TIMESERVER_TCP_PORT); br / nbsp; memcpy((void *)(amp;s_SocketAddress_In.sin_addr), (void *)(s_HostEntry-gt;h_addr), sizeof(s_SocketAddress_In.sin_addr)); br / nbsp; s_Socket = socket(AF_INET, SOCK_STREAM, 0); br / nbsp; if(s_Socket gt;= 0) br / nbsp; { br / nbsp; nbsp;/* TODO: Tick save */nbsp; nbsp;nbsp; br / nbsp; nbsp;if(connect(s_Socket, (struct sockaddr *)amp;s_SocketAddress_In, sizeof(s_SocketAddress_In)) gt;= 0) br / nbsp; nbsp;{ br / nbsp; nbsp; if(recv(s_Socket, amp;s_Return, sizeof(s_Return), 0) == sizeof(s_Return)) br / nbsp; nbsp; { br / nbsp; nbsp; nbsp;s_Return = ntohl(s_Return) - DEF_RFC_868_CORRESPOND_VALUE; /* Time entry 00:00:00 1 JAN 1970 GMT */ br / nbsp; nbsp; nbsp;/* TODO: s_Return += (Tick value / 2) */nbsp; nbsp;nbsp; nbsp; br / nbsp; nbsp; } br / nbsp; nbsp; else fprintf(stderr, Can not recv time_t from \%s\ !\n, s_TimeServer);nbsp; nbsp; br / nbsp; nbsp;}nbsp; nbsp;nbsp; nbsp; br / nbsp; nbsp;else fprintf(stderr, Can not connect to timeserver \%s\ !\n, s_TimeServer); br / #if defined(WIN32) br / nbsp; nbsp;closesocket(s_Socket);nbsp; nbsp;nbsp; br / #elsenbsp; nbsp; br / nbsp; nbsp;close(s_Socket);nbsp; nbsp; br / #endif br / nbsp; } br / nbsp; else fprintf(stderr, Can not open socket !\n); br / } br / else fprintf(stderr, Can not get host by name !\n); br / return((time_t)s_Return); br / } br / br / int main(int s_Argc, char *s_Argv[]) br / { br / char *s_TimeServer = time.bora.net; nbsp; nbsp; br / time_t s_RemoteTime; br / fprintf(stdout, rdate v0.0.1 - Code by JaeHyuk Cho lt;minzkn@infoeq.co.krgt;\n\n); br / if(s_Argc gt; 1)s_TimeServer = s_Argv[1]; br / fprintf(stdout, Timeserver is %s\n, s_TimeServer); br / s_RemoteTime = MZ_GetRemoteTime(s_TimeServer); br / if(s_RemoteTime) br / { br / nbsp; fprintf(stdout, TIMEgt;gt; %s\n, ctime(amp;s_RemoteTime));nbsp; nbsp;nbsp; br / nbsp; /* TODO: Adjust clock delay */ br / nbsp; /* stime(amp;s_RemoteTime); */ /* Save time */ br / } br / else fprintf(stderr, Can not sync from \%s\ !\n, s_TimeServer); br / return(0); br / } br / br / /* End of source */ /td/tr/tbody/table
크리에이티브 커먼즈 라이센스
Creative Commons License

태그 : , , , , ,
트랙백0 | 댓글0
이 글의 관련글(트랙백) 주소 :: http://blog.minzkn.com/trackback/273

이름 :
비밀번호 :
홈페이지 :
  비밀글로 등록
내용 :
 



[PREV] [1] ... [298][299][300][301][302][303][304][305][306] ... [421] [NEXT]
위치로그 : 태그 : 방명록 : 관리자 : rss
장인정신’s Blog is powered by Tattertools.com / Designed by Lefttoe.Net
네. 이제 결혼했습니다.
  06/27 - 장인정신
네. 거기 맞아요. 그때 만나...
  06/27 - 장인정신
결혼하시나봐요~ 축하드립니다~
  06/25 - MasterQ
저희집 바로 옆으로 지나가셨...
  06/25 - MasterQ
아우~ 정말 소중한 자료 감사...
  03/09 - 착한청년
신기전
Savvy의 블로그
network+is+unreachable-으로...
blogring.org
서버의 Local IP 가져오기, 단상
엘레노아의 작업로그

Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.