// #include // #include // #include // #include // #include // #include // #include /* pourmemset */ // #include /* pourtoupper */ // #include /* pour inet_ntop */ // #define DGRAM_MAX 1024 /* taille MAX en réception */ // void usage() { // fprintf(stderr,"usage: serveur port fichier\n"); // exit(1); // } // int main(int argc, char **argv) { // int s, ret; // socklen_t len_src_addr; // struct addrinfo hints, *result; // struct sockaddr_storage src_addr; // char request[DGRAM_MAX]; // /* Vérificationd e sarguments */ // if(argc!=2){ // fprintf(stderr,"Erreur : Nb args !"); // usage(); // } // memset(&hints, 0, sizeof(struct addrinfo)); // hints.ai_flags = AI_PASSIVE; /* For wildcard I P address */ // hints.ai_family = AF_INET6; /* AllowIPv4o rIPv6 */ // hints.ai_socktype = SOCK_DGRAM; /* Datagramsocket */ // hints.ai_protocol = 0; /* Any protocol */ // hints.ai_canonname = NULL; // hints.ai_addr = NULL; // hints.ai_next = NULL; // ret = getaddrinfo (NULL, argv[1], &hints, &result); // if(ret != 0) { // fprintf(stderr, "getaddrinfo : %s\n", gai_strerror(ret)); // exit(EXIT_FAILURE); // } // /* Créationd de la socket IPv4/IPv6 */ // if((s=socket(result->ai_family, result->ai_socktype, result->ai_protocol))==-1) { // perror("socket"); exit(errno); // } // /* Attachementd el asocket */ // if(bind(s, result->ai_addr, result->ai_addrlen) == -1) { // perror("bind"); exit(errno); // } // freeaddrinfo (result); // while(1) { // /* Attente et lecture d'une requête */ // len_src_addr = sizeof src_addr; // if((ret=recvfrom(s, request, DGRAM_MAX-1, 0, (struct sockaddr*) &src_addr, &len_src_addr))==-1) { // perror("recvfrom"); exit(1); // } // request[ret] = 0; // puts(request); // /* Traitement de la requête (passage en majuscule) */ // { // int i=0; // while(request[i]) { // request[i]=toupper(request[i]); // ++i; // } // } // /* Envoi de la réponse */ // if(sendto(s, request, strlen(request), 0, (struct sockaddr*) &src_addr, len_src_addr)==-1) { // perror("sendto"); exit(1); // } // } // close(s); // return 0; // }