/**Copyright (c) 2015 Mathias Buus, Marcello Missiroli & Remy Lebeau **/ #include #include #include #define BUFFER_SIZE 1024 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; int sock, port=6666, nBytes,err; char buffer[1024],indirizzo[16]="127.0.0.1"; struct sockaddr_in serverAddr; int addr_size; /** Controllo linea di comando **/ if (argc != 3 && argc !=1 ) { perror("Uso: ./udp_client [IP] [porta]\n"); exit(1); } if (argc == 3) { strcpy(indirizzo,argv[1]); port = atoi(argv[2]); } /** Inizializzazione Winsock **/ err = WSAStartup(MAKEWORD(2,2), &wsadata); if (err != 0) on_error("Errore in WSAStartup", &err); /** Crea socket **/ sock = socket(PF_INET, SOCK_DGRAM, 0); /** Configurazione dati indirizzo **/ serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(port); serverAddr.sin_addr.s_addr = inet_addr(indirizzo); memset(serverAddr.sin_zero, '\0', sizeof serverAddr.sin_zero); addr_size = sizeof serverAddr; printf("Scrivi la frase da inviare al server: "); fgets(buffer,1024,stdin); printf("Hai scritto: %s",buffer); nBytes = strlen(buffer) + 1; /** Invia messaggio **/ sendto(sock,buffer,nBytes,0,(struct sockaddr *)&serverAddr,addr_size); WSACleanup(); closesocket(sock); return 0; }