You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.5 KiB
78 lines
2.5 KiB
// #include<stdio.h>
|
|
// #include <stdlib.h>
|
|
// #include<sys/types.h>
|
|
// #include <sys/socket.h>
|
|
// #include<errno.h>
|
|
// #include<netdb.h>
|
|
// #include<string.h> /* pourmemset */
|
|
// #include<ctype.h> /* pourtoupper */
|
|
// #include <arpa/inet.h> /* 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;
|
|
// }
|