piffy

UDP Client (C++/Win)

Aug 8th, 2015
323
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**Copyright (c) 2015 Mathias Buus, Marcello Missiroli & Remy Lebeau  **/
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <winsock.h>
  5.  
  6. #define BUFFER_SIZE 1024
  7.  
  8. void on_error(char *s, int *errCode = NULL)
  9. {
  10.     int err = (errCode) ? *errCode : WSAGetLastError();
  11.     fprintf(stderr, "%s: %d\n", s, err);
  12.     fflush(stderr);
  13.     WSACleanup();
  14.     exit(1);
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.     WSADATA wsadata;
  20.    
  21.   int sock, port=6666, nBytes,err;
  22.   char buffer[1024],indirizzo[16]="127.0.0.1";
  23.   struct sockaddr_in serverAddr;
  24.   int addr_size;
  25.  
  26.    /** Controllo linea di comando **/
  27.   if (argc != 3 && argc !=1 ) {
  28.     perror("Uso: ./udp_client [IP] [porta]\n");
  29.         exit(1);
  30.    }
  31.  
  32.   if (argc == 3) {
  33.     strcpy(indirizzo,argv[1]);
  34.     port = atoi(argv[2]);
  35.     }
  36.    
  37.     /** Inizializzazione Winsock **/
  38.     err = WSAStartup(MAKEWORD(2,2), &wsadata);
  39.     if (err != 0)
  40.         on_error("Errore in WSAStartup", &err);
  41.  
  42.  
  43.   /** Crea socket **/
  44.   sock = socket(PF_INET, SOCK_DGRAM, 0);
  45.  
  46.   /** Configurazione dati indirizzo **/
  47.   serverAddr.sin_family = AF_INET;
  48.   serverAddr.sin_port = htons(port);
  49.   serverAddr.sin_addr.s_addr = inet_addr(indirizzo);
  50.   memset(serverAddr.sin_zero, '\0', sizeof serverAddr.sin_zero);  
  51.   addr_size = sizeof serverAddr;
  52.  
  53.   printf("Scrivi la frase da inviare al server: ");
  54.   fgets(buffer,1024,stdin);
  55.   printf("Hai scritto: %s",buffer);
  56.  
  57.   nBytes = strlen(buffer) + 1;
  58.    
  59.   /** Invia messaggio **/
  60.   sendto(sock,buffer,nBytes,0,(struct sockaddr *)&serverAddr,addr_size);
  61.  
  62.  
  63.     WSACleanup();
  64.     closesocket(sock);
  65.     return 0;
  66. }
RAW Paste Data