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

void error (const char *msg) 
{
    fprintf (stderr, "%s: %s\n", strerror (errno), msg);
    exit (-1);
}

int main (int argc,char **argv) 
{
    struct sockaddr_in server_addr;
    struct sockaddr_in adr;
    int    sock, len, count;   
    char   buffer[512];
    const char   *host = argc > 1 ? argv[1] : "127.0.0.1";

    memset (&server_addr,0,sizeof server_addr);
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons (9090);
    if  (inet_aton  (host, &server_addr.sin_addr) == 0)
        error  ("bad server address");

    if ((sock = socket (AF_INET,SOCK_DGRAM,0)) == -1)
        error ("socket (2)");

    len = sizeof server_addr;
    count = sendto (sock, buffer, 0, 0, (struct sockaddr *)&server_addr, len);
    if  (count < 0)
        error ("sendto (2)");

    count = recvfrom (sock, buffer, sizeof buffer, 0, NULL, NULL);
    if  (count < 0 )
        error ("recvfrom (2)");

    printf ("%s", buffer);

    close (sock);
    return 0;
}
