Advertisement
heavenriver

es5feb2010.c

Jan 23rd, 2014
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.09 KB | None | 0 0
  1. # define errormsg(x) { puts(x); exit(1); }
  2.  
  3. int sendpkt(unsigned int timeout, char *ip, int port)
  4.     {
  5.     int sock;
  6.     sock = socket(AF_INET, SOCK_DGRAM, 0);
  7.     if(sock == -1) errormsg("Errore nella creazione del socket\n");
  8.    
  9.     struct sockaddr_in myaddr;
  10.     myaddr.sin_family = AF_INET;
  11.     myaddr.sin_port = htons(port);
  12.     myaddr.sin_addr.s_addr = inet_aton(ip, &myaddr.sin_addr); // oppure: htonl(ip);
  13.    
  14.     char *senddata = malloc(sizeof(char) * 1024);
  15.     memset(senddata, 0, 1024); // generizzazione di bzero
  16.     char *recvdata = malloc(sizeof(char) * 1024);
  17.     memset(recvdata, 0, 1024);
  18.    
  19.     int success;
  20.     success = sendto(sock, senddata, 1024, 0, &myaddr, sizeof(myaddr));
  21.     if(success == -1) errormsg("Invio fallito\n");
  22.    
  23.     signal(SIGALRM, failcase);
  24.     alarm(timeout);
  25.     success = recvfrom(sock, recvdata, 1024, 0, &myaddr, sizeof(myaddr));
  26.     if(success == -1) errormsg("Ricezione fallita\n");
  27.    
  28.     int i = 1;
  29.     int counter = 0;
  30.     while(i < 1024)
  31.         {
  32.         if(*(recvdata + i) != *(senddata + i))
  33.             counter++;
  34.         i++;
  35.         }
  36.    
  37.     return counter;
  38.     }
  39.  
  40. int failcase(int sign)
  41.     {
  42.     if(sign == SIGALRM)
  43.         return -1;
  44.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement