소켓 프로그래밍으로 타임프로토콜(client) 구현 알려주세요
소켓 프로그래밍으로 타임프로토콜 (포트 37, RFC 868) 클라이언트 소스를 구현할려고 합니다.
검색을 해보니까
# File: socket-example-4.py
import socket
import struct, time
# server
HOST = "localhost"
PORT = 8037
# reference time (in seconds since 1900-01-01 00:00:00)
TIME1970 = 2208988800L # 1970-01-01 00:00:00
# connect to server
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# send empty packet
s.sendto("", (HOST, PORT))
# read 4 bytes from server, and convert to time value
t, server = s.recvfrom(4)
t = struct.unpack("!I", t)[0]
t = int(t - TIME1970)
s.close()
print "server time is", time.ctime(t)
print "local clock is", int(time.time()) - t, "seconds off"
이런식으로 자바로 구현할수 있는 소스만 나와 있는데 ..
씨언어로 구현할수 있을까요???
int main()
{
int ssock;
int clen;
struct sockaddr_in client_addr, server_addr;
char buf[MAXBUF];
strcpy(buf,"");
if((ssock=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))<0){
perror("SOCKET ERROR: ");
exit(1);
}
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family =AF_INET;
server_addr.sin_addr.s_addr = inet_addr("time.nist.gov");
server_addr.sin_port =htons(37);
sendto(ssock,(void*)buf,MAXBUF,0,(struct sockaddr*)&server_addr, sizeof(server_addr));
printf("Send message : %s\n",buf);
recvfrom(ssock,(void *)buf,MAXBUF,0,(struct sockaddr*)&client_addr, &clen);
printf("Receive message %s\n",buf);
close(ssock);
return 0;
}
이런식으로 구현 해보았는데 자바에서 나와있는 시간 정보를 어떻게 해야될지 모르겠네요 ㅠㅠ
씨언어로 되어있는 셈플코드나 소켓프로그래밍 잘 알고계시면 알려주세요
부탁드립니다 ^^
댓글 달기