Advertisement
Guest User

client/server code

a guest
Sep 1st, 2016
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.51 KB | None | 0 0
  1. Client:
  2. ******
  3.  
  4. #include <sys/socket.h>
  5. #include <sys/types.h>
  6. #include <netinet/in.h>
  7. #include <netdb.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <stdlib.h>
  11. #include <unistd.h>
  12. #include <errno.h>
  13. #include <arpa/inet.h>
  14.  
  15. #define BUFSIZE (4096)
  16.  
  17. int SocketWait(int socketFd)
  18. {
  19.     struct timeval tv;
  20.     fd_set readSet, writeSet, exceptSet;
  21.  
  22.     FD_ZERO(&readSet);
  23.     FD_ZERO(&writeSet);
  24.     FD_ZERO(&exceptSet);
  25.  
  26.     FD_SET(socketFd, &writeSet);
  27.  
  28.     tv.tv_sec = 100;
  29.     tv.tv_usec = 0;
  30.  
  31.     if (select((int)(socketFd)+1, &readSet, &writeSet, &exceptSet, &tv) <= 0)
  32.     {
  33.         return -1;
  34.     }
  35.  
  36.     return 0;
  37. }
  38.  
  39. int main(int argc, char *argv[])
  40. {
  41.     int sockfd = 0, n = 0, i = 0;
  42.     char* buffer = malloc(BUFSIZE);
  43.     struct sockaddr_in serv_addr;
  44.     int value = 0;
  45.  
  46.     struct timeval tv;
  47.     double start_time, now;
  48.  
  49.     setvbuf(stdout, NULL, _IONBF, 0);
  50.  
  51.     if(argc != 2)
  52.     {
  53.         printf("\n Usage: %s <ip of server> \n",argv[0]);
  54.         return 1;
  55.     }
  56.  
  57.     if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
  58.     {
  59.         printf("\n Error : Could not create socket \n");
  60.         return 1;
  61.     }
  62.  
  63.     memset(&serv_addr, '0', sizeof(serv_addr));
  64.  
  65.     serv_addr.sin_family = AF_INET;
  66.     serv_addr.sin_port = htons(50000);
  67.  
  68.     if(inet_pton(AF_INET, argv[1], &serv_addr.sin_addr)<=0)
  69.     {
  70.         printf("\n inet_pton error occured\n");
  71.         return 1;
  72.     }
  73.  
  74.     value = BUFSIZE;
  75.     if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, (char*)&value, sizeof(int)))
  76.     {
  77.         printf("\n Error : SetSockOpt Failed \n");
  78.     }
  79.     if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (char*)&value, sizeof(int)))
  80.     {
  81.         printf("\n Error : SetSockOpt Failed \n");
  82.     }
  83.  
  84.     if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
  85.     {
  86.        printf("\n Error : Connect Failed \n");
  87.        return 1;
  88.     }
  89.  
  90.     gettimeofday (&tv, NULL);
  91.     start_time=((double)tv.tv_sec)*1000000.0+tv.tv_usec;
  92.  
  93.     printf("\n With wait");
  94.     for(i = 0; i < 160; i++)
  95.     {
  96.         if (SocketWait(sockfd))
  97.         {
  98.             printf("\n Error : Select Failed \n");
  99.         }
  100.  
  101.         if (send(sockfd, buffer, BUFSIZE, 0) != BUFSIZE)
  102.         {
  103.             return -1;
  104.         }
  105.     }
  106.  
  107.     gettimeofday (&tv, NULL);
  108.     now=((double)tv.tv_sec)*1000000.0+tv.tv_usec;
  109.     printf("\n Time: %.3lfs",  ((now-start_time)/1000000.0));
  110.     start_time = now;
  111.  
  112.     printf("\n Without wait");
  113.     for(i = 0; i < 160; i++)
  114.     {
  115.         if (send(sockfd, buffer, BUFSIZE, 0) != BUFSIZE)
  116.         {
  117.             return -1;
  118.         }
  119.     }
  120.  
  121.     gettimeofday (&tv, NULL);
  122.     now=((double)tv.tv_sec)*1000000.0+tv.tv_usec;
  123.     printf("\n Time: %.3lfs",  ((now-start_time)/1000000.0));
  124.  
  125.     close(sockfd);
  126.  
  127.     printf("\n");
  128.  
  129.     return 0;
  130. }
  131.  
  132.  
  133.  
  134. Server:
  135. ******
  136. #include <sys/socket.h>
  137. #include <netinet/in.h>
  138. #include <arpa/inet.h>
  139. #include <stdio.h>
  140. #include <stdlib.h>
  141. #include <unistd.h>
  142. #include <errno.h>
  143. #include <string.h>
  144. #include <sys/types.h>
  145. #include <time.h>
  146.  
  147. #define BUFSIZE (65536)
  148.  
  149. int main(int argc, char *argv[])
  150. {
  151.     int listenfd = 0, connfd = 0;
  152.     struct sockaddr_in serv_addr;
  153.     int value = 0, i = 0;
  154.  
  155.     char *buffer = malloc(BUFSIZE);
  156.     time_t ticks;
  157.  
  158.     setvbuf(stdout, NULL, _IONBF, 0);
  159.  
  160.     listenfd = socket(AF_INET, SOCK_STREAM, 0);
  161.  
  162.     memset(&serv_addr, '0', sizeof(serv_addr));
  163.  
  164.     value = BUFSIZE;
  165.     if (setsockopt(listenfd, SOL_SOCKET, SO_RCVBUF, (char*)&value, sizeof(int)))
  166.     {
  167.         printf("\n Error : SetSockOpt Failed \n");
  168.     }
  169.     if (setsockopt(listenfd, SOL_SOCKET, SO_SNDBUF, (char*)&value, sizeof(int)))
  170.     {
  171.         printf("\n Error : SetSockOpt Failed \n");
  172.     }
  173.  
  174.     value = 1;
  175.     if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (char*)&value, sizeof(int)))
  176.     {
  177.         printf("\n Error : SetSockOpt Failed \n");
  178.     }
  179.  
  180.     serv_addr.sin_family = AF_INET;
  181.     serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  182.     serv_addr.sin_port = htons(50000);
  183.  
  184.     if (bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)))
  185.     {
  186.         printf("\n Error : Bind Failed \n");
  187.     }
  188.  
  189.     if (listen(listenfd, 16))
  190.     {
  191.         printf("\n Error : Listen Failed \n");
  192.     }
  193.  
  194.     connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
  195.  
  196.     while (1)
  197.     {
  198.         if ((recv(connfd, buffer, BUFSIZE, 0)) <= 0)
  199.         {
  200.             printf("\n Error : Recv Failed \n");
  201.             return -1;
  202.         }
  203.     }
  204.  
  205.     close(connfd);
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement