Thursday, October 29, 2015

Sockets - Client Code: udp_client.c

/* UDP client in the internet domain */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>




void
error (
    const char* msg
) {
    perror(msg);
    exit(0);
}



int
main (
    int        argc,
    char*    argv[])
{
    int                    sock;
    int                    n;
    unsigned int        length;
    struct sockaddr_in    server;
    struct sockaddr_in    from;
    struct hostent*        hp;
    char                buffer[1024];
   
    if (argc != 3) error("Usage: IP port\n");

    sock    = socket(AF_INET, SOCK_DGRAM, 0);
    if (sock < 0) error("socket");

    server.sin_family    = AF_INET;
    server.sin_port        = htons(atoi(argv[2]));
    inet_aton(argv[1], &server.sin_addr);

    length            = sizeof(struct sockaddr_in);
    printf("Please enter the message: ");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    n                = sendto(sock,buffer, strlen(buffer),0,
                        (const struct sockaddr *)&server,length);
    if (n < 0) error("Sendto");
    n                = recvfrom(sock,buffer,256,0,(struct sockaddr *)&from, &length);
    if (n < 0) error("recvfrom");
    write(1,"Got an ack: ",12);
    write(1,buffer,n);
    close(sock);
    return 0;
}


No comments:

Post a Comment