piffy icon

UDP Server (C++/Win)

piffy | PRO | 08/08/15 12:51:02 PM UTC | 0 ⭐ | 10840 👁️ | Never ⏰ | []
C++ (WinAPI) |

0 B

|

None

|

0 👍

/

0 👎

/**Copyright (c) 2015 Mathias Buus, Marcello Missiroli & Remy Lebeau */ 
#include <stdio.h> 
#include <stdlib.h> 
#include <winsock.h> 
 
#define BUFFER_SIZE 1024 
#define NPACK 10 
 
void on_error(char *s, int *errCode = NULL) 
{ 
    int err = (errCode) ? *errCode : WSAGetLastError(); 
    fprintf(stderr, "%s: %d\n", s, err); 
    fflush(stderr); 
    WSACleanup(); 
    exit(1); 
} 
 
int main(int argc, char *argv[]) 
{ 
      WSADATA wsadata; 
      struct sockaddr_in server, client; 
      int s, i, slen=sizeof(client), port=6666, err; 
      char buf[BUFFER_SIZE]; 
 
      /** Controllo linea di comando **/ 
      if (argc >2 ) { 
    on_error("Uso: ./udp_server [porta]\n"); 
        exit(1); 
      } 
      if (argc == 2) {port = atoi(argv[1]);} 
   
    /** Inizializzazione Winsock **/ 
    err = WSAStartup(MAKEWORD(2,2), &wsadata); 
    if (err != 0) 
        on_error("Errore in WSAStartup", &err); 
 
      /** Creazione socket **/ 
      if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1) 
         on_error("Non riesco a creare il socket"); 
      
      /** Impostazioni del socket del server */ 
      memset((char *) &server, 0, sizeof(server)); /** Azzeramento **/ 
      server.sin_family = AF_INET; /** Famiglia internet **/ 
      server.sin_port = htons(port); /** Conversione numero **/ 
      server.sin_addr.s_addr = htonl(INADDR_ANY); /** Accetta da qualsiasi IP **/ 
 
     /** Bind  **/ 
     if (bind(s, (struct sockaddr *)&server, sizeof(server))==-1) 
         on_error("Non riesco a fare il bind"); 
     else printf("In ascolto sulla porta %d\n",port); 
    
      for (i=0; i<NPACK; i++) { 
        memset(buf, 0, BUFFER_SIZE); 
        /** Ricezione pacchetto **/ 
        if (recvfrom(s, buf, BUFFER_SIZE, 0, (struct sockaddr *)&client, &slen)==-1) 
          on_error("Errore in ricezione"); 
        printf("Pacchetto ricevuto da %s:%d\nDato: %s\n\n", 
           inet_ntoa(client.sin_addr), ntohs(client.sin_port), buf); 
      } 
 
    WSACleanup(); 
    closesocket(s); 
    return 0; 
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎