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

#define PORT 8080
#define SERVER_IP "127.0.0.1"

typedef struct {
    int number;
    struct timespec timestamp;
} Data;

int main() {
    int sockfd;
    struct sockaddr_in servaddr;
    int n = 100;
    Data data;

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

    memset(&servaddr, 0, sizeof(servaddr));

    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(PORT);
    servaddr.sin_addr.s_addr = inet_addr(SERVER_IP);

    while (1) {
        struct timespec ts;
        data.number = n++;
        clock_gettime(CLOCK_REALTIME, &data.timestamp);

        sendto(sockfd, &data, sizeof(Data),
            MSG_CONFIRM, (const struct sockaddr*)&servaddr,
            sizeof(servaddr));

        ts.tv_sec = 1;
        ts.tv_nsec = 0;
        nanosleep(&ts, NULL);
    }

    close(sockfd);
    return 0;
}
