Advertisement
Guest User

Untitled

a guest
Nov 20th, 2014
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.19 KB | None | 0 0
  1. // Wait for server answer
  2.     struct sockaddr_in sender_addr;
  3.     socklen_t sender_addr_len;
  4.     int ready = 0;
  5.     int timeouts = 0;
  6.    
  7.     while(1) {
  8.         timeout.tv_sec = 2;
  9.         timeout.tv_usec = 0;
  10.         FD_ZERO(&socket_rdy);
  11.         FD_SET(server.sockfd, &socket_rdy);
  12.         ready = select(server.sockfd + 1, &socket_rdy, NULL, NULL, &timeout);
  13.    
  14.         if(ready == -1) {
  15.             fprintf(stderr, "Error during select() in set()\n");
  16.             exit(1);       
  17.         }
  18.         else if(ready == 0) {
  19.             // Timeout, send again
  20.             timeouts ++;
  21.             if(timeouts >= 6) {
  22.                 fprintf(stderr, "Error - timeout limit reached. Server is currently unavailable\n");
  23.                 exit(1);
  24.             }
  25.             printf("Timeout - Sending SET %d %d\n", key, value);
  26.             count = sendto(server.sockfd, &buffer, sizeof(buffer), 0, (struct sockaddr *) &server.addr, server.addr_len);
  27.             if(count == -1) {
  28.                 fprintf(stderr, "Set() has encountered an error during send()\n");
  29.                 exit(1);
  30.             }
  31.         }
  32.         else {
  33.             // Socket is ready
  34.             break;
  35.         }
  36.     }
  37.    
  38.     count = recvfrom(server.sockfd, buffer, sizeof(buffer), 0, (struct sockaddr *) &sender_addr, &sender_addr_len);
  39.     if(count == -1) {
  40.         fprintf(stderr, "Set() encountered an error during receiving - Error Number %d\n", errno);
  41.         exit(1);
  42.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement