/* UDP client for time */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <fcntl.h> #define SIZE 1400 char buf[SIZE]; #define TIME_PORT 13 int main(int argc, char *argv[]) { int sockfd; int nread; struct sockaddr_in serv_addr, client_addr; int len; if (argc != 2) { fprintf(stderr, "usage: %s IPaddr\n", argv[0]); exit(1); } if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror(NULL); exit(2); } client_addr.sin_family = AF_INET; client_addr.sin_addr.s_addr = htonl(INADDR_ANY); client_addr.sin_port = htons(0); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(argv[1]); serv_addr.sin_port = htons(TIME_PORT); if (bind(sockfd, &client_addr, sizeof(client_addr)) < 0) { perror(NULL); close(sockfd); exit(3); } len = sizeof(serv_addr); sendto(sockfd, buf, 1, 0, &serv_addr, len); nread = recvfrom(sockfd, buf, SIZE, 0, &client_addr, &len); write(1, buf, nread); close(sockfd); exit(0); }