Basic Socket programming

Basic Socket programming

/* Sample UDP client */

 

#include <sys/socket.h>

#include <netinet/in.h>

#include <stdio.h>

 

int main(int argc, char**argv)

{

   int sockfd,n;

   struct sockaddr_in servaddr,cliaddr;

   char sendline[1000];

   char recvline[1000];

 

   if (argc != 2)

   {

      printf(“usage:  udpcli <IP address>n”);

      exit(1);

   }

 

   sockfd=socket(AF_INET,SOCK_DGRAM,0);

 

   bzero(&servaddr,sizeof(servaddr));

   servaddr.sin_family = AF_INET;

   servaddr.sin_addr.s_addr=inet_addr(argv[1]);

   servaddr.sin_port=htons(32000);

 

   while (fgets(sendline, 10000,stdin) != NULL)

   {

      sendto(sockfd,sendline,strlen(sendline),0,

             (struct sockaddr *)&servaddr,sizeof(servaddr));

      n=recvfrom(sockfd,recvline,10000,0,NULL,NULL);

      recvline[n]=0;

      fputs(recvline,stdout);

   }

}

 

/* Sample UDP server */

 

#include <sys/socket.h>

#include <netinet/in.h>

#include <stdio.h>

 

int main(int argc, char**argv)

{

   int sockfd,n;

   struct sockaddr_in servaddr,cliaddr;

   socklen_t len;

   char mesg[1000];

 

   sockfd=socket(AF_INET,SOCK_DGRAM,0);

 

   bzero(&servaddr,sizeof(servaddr));

   servaddr.sin_family = AF_INET;

   servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

   servaddr.sin_port=htons(32000);

   bind(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

 

   for (;;)

   {

      len = sizeof(cliaddr);

      n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&len);

      sendto(sockfd,mesg,n,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));

      printf(“——————————————————-n”);

      mesg[n] = 0;

      printf(“Received the following:n”);

      printf(“%s”,mesg);

      printf(“——————————————————-n”);

   }

}

 

 

 

/* Sample TCP server */

 

#include <sys/socket.h>

#include <netinet/in.h>

#include <stdio.h>

 

int main(int argc, char**argv)

{

   int listenfd,connfd,n;

   struct sockaddr_in servaddr,cliaddr;

   socklen_t clilen;

   pid_t     childpid;

   char mesg[1000];

 

   listenfd=socket(AF_INET,SOCK_STREAM,0);

 

   bzero(&servaddr,sizeof(servaddr));

   servaddr.sin_family = AF_INET;

   servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

   servaddr.sin_port=htons(32000);

   bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

 

   listen(listenfd,1024);

 

   for(;;)

   {

      clilen=sizeof(cliaddr);

      connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);

 

      if ((childpid = fork()) == 0)

      {

         close (listenfd);

 

         for(;;)

         {

            n = recvfrom(connfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&clilen);

            sendto(connfd,mesg,n,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));

            printf(“——————————————————-n”);

            mesg[n] = 0;

            printf(“Received the following:n”);

            printf(“%s”,mesg);

            printf(“——————————————————-n”);

         }

 

      }

      close(connfd);

   }

}

 

 

/* Sample TCP client */

 

#include <sys/socket.h>

#include <netinet/in.h>

#include <stdio.h>

 

int main(int argc, char**argv)

{

   int sockfd,n;

   struct sockaddr_in servaddr,cliaddr;

   char sendline[1000];

   char recvline[1000];

 

   if (argc != 2)

   {

      printf(“usage:  client <IP address>n”);

      exit(1);

   }

 

   sockfd=socket(AF_INET,SOCK_STREAM,0);

 

   bzero(&servaddr,sizeof(servaddr));

   servaddr.sin_family = AF_INET;

   servaddr.sin_addr.s_addr=inet_addr(argv[1]);

   servaddr.sin_port=htons(32000);

 

   connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));

 

   while (fgets(sendline, 10000,stdin) != NULL)

   {

      sendto(sockfd,sendline,strlen(sendline),0,

             (struct sockaddr *)&servaddr,sizeof(servaddr));

      n=recvfrom(sockfd,recvline,10000,0,NULL,NULL);

      recvline[n]=0;

      fputs(recvline,stdout);

   }

}

Comments