Skip to main content

UDP echo server, client

udpserver.c


#include "stdio.h"
#include "stdlib.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"
#include "netinet/in.h"
#include "string.h"
#define SA struct sockaddr
#define MAX 1024

int main(int argc,char** argv) {
    int sockfd,n;
    socklen_t len;
    struct sockaddr_in servaddr,cliaddr;
    char buff[MAX],tmp[MAX];

    //create socket
    sockfd = socket(AF_INET,SOCK_DGRAM,0);
    //fill socket
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(atoi(argv[1]));
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

    //bind
    bind(sockfd,(SA*)&servaddr,sizeof(servaddr));

    for(;;) {
    bzero(buff,sizeof(buff));
    len = sizeof(cliaddr);
    n=recvfrom(sockfd,buff,MAX,0,(SA*)&cliaddr,&len);
    strcpy(tmp,buff);
    printf("received : %s",tmp);
    if(n < 6) 
    {
        perror("send message");
        exit(0);
    }
    sendto(sockfd,tmp,MAX,0,(SA*)&cliaddr,len);
    bzero(buff,sizeof(buff));
           }
    close(sockfd);
    return 0;
}
    
udpclient.c


#include "stdio.h"
#include "stdlib.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"
#include "netinet/in.h"
#include "string.h"
#define SA struct sockaddr
#define MAX 1024

int main(int argc,char** argv) {
    int sockfd,n;
    socklen_t len;
    struct sockaddr_in servaddr;
    char buff[MAX];

    //create socket
    sockfd = socket(AF_INET,SOCK_DGRAM,0);

    //fill struct 
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(atoi(argv[1]));
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    //send to server
    printf("enter message\n");
    for(;;) {
    bzero(buff,sizeof(buff));
    fgets(buff,MAX,stdin);
    len=sizeof(servaddr);
    sendto(sockfd,buff,MAX,0,(SA*)&servaddr,len);
    bzero(buff,sizeof(buff));
    recvfrom(sockfd,buff,MAX,0,(SA*)&servaddr,&len);
    printf("%s",buff);
    }
    close(sockfd);
    return 0;
}

Comments