// Experiment 16: UDP client-server program to display the TIME
// CLIENT side
// Compile: gcc 16_udp_time_client.c -o timeclient
// Run    : ./timeclient

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

#define PORT 4040
#define BUF  256

int main() {
    int sockfd;
    char buffer[BUF];
    struct sockaddr_in servaddr;

    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
        perror("socket"); exit(1);
    }

    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port   = htons(PORT);
    inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);

    char *req = "Time please";
    sendto(sockfd, req, strlen(req), 0,
           (const struct sockaddr*)&servaddr, sizeof(servaddr));

    socklen_t len = sizeof(servaddr);
    int n = recvfrom(sockfd, buffer, BUF, 0,
                     (struct sockaddr*)&servaddr, &len);
    buffer[n] = '\0';
    printf("Server time: %s", buffer);

    close(sockfd);
    return 0;
}
