// File: reuseport_client.c
// Compile: gcc reuseport_client.c -o reuseport_client
// Run: ./reuseport_client

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

#define PORT 9090
#define SERVER_IP "192.168.2.1"

int main() {
    int sock;
    struct sockaddr_in server_addr;
    char buffer[1024];
    char *message = "Hello from client";

    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) { perror("socket"); exit(EXIT_FAILURE); }

    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(PORT);
    if (inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr) <= 0) {
        perror("inet_pton"); close(sock); exit(EXIT_FAILURE);
    }

    if (connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
        perror("connect"); close(sock); exit(EXIT_FAILURE);
    }

    send(sock, message, strlen(message), 0);
    printf("Client sent: %s\n", message);

    int n = read(sock, buffer, sizeof(buffer)-1);
    if (n > 0) {
        buffer[n] = '\0';
        printf("Client received: %s\n", buffer);
    }

    close(sock);
    return 0;
}

