diff --git a/tsock_compliquev1.c b/tsock_compliquev1.c new file mode 100644 index 0000000..84d611c --- /dev/null +++ b/tsock_compliquev1.c @@ -0,0 +1,220 @@ +/* librairie standard ... */ +#include +/* pour getopt */ +#include +/* déclaration des types de base */ +#include +/* constantes relatives aux domaines, types et protocoles */ +#include +/* constantes et structures propres au domaine UNIX */ +#include +/* constantes et structures propres au domaine INTERNET */ +#include +/* structures retournées par les fonctions de gestion de la base de +données du réseau */ +#include +/* pour les entrées/sorties */ +#include +/* pour la gestion des erreurs */ +#include +#define BASE_SIZE 10 + +void construire_message(char *message, char motif, int lg, int num_message) { + int i; + printf("\nSOURCE : Envoi n°%d (%d) [",num_message,lg); + char* indice_message = malloc(sizeof(char)* 5); + _itoa(num_message,indice_message,10); + + int nb_zeros=1; + + while (num_message > 0){ + num_message/=10; + nb_zeros++; + } + + for (int j=0; j< 5-nb_zeros; j++){ + + message[j]='-'; + } + + int l=0; + for (int k=5-nb_zeros;k<5;k++){ + message[k]=indice_message[l]; + l++; + } + + for (i=0;ih_addr, + hp->h_length ) ; + + for (int i = 0; i < nb_message; i++) { + // Construction du message + construire_message(message, 'a' + (i % 26), BASE_SIZE,i); + + // Envoi du message + + sendto(sock,message,longueur_message,0,(struct sockaddr*)&adr_dest,longueur_adr_dest); + } + + exit(0); + + } + + else { + + + // Creation de l'adresse du socket distant + struct sockaddr_in adr_locale; + int longueur_adr_locale = sizeof(adr_locale); + + int longueur_message = BASE_SIZE; + + memset((char *)& adr_locale, 0, sizeof(adr_locale)) ; + + adr_locale.sin_family=AF_INET; + adr_locale.sin_port=port; + adr_locale.sin_addr.s_addr = INADDR_ANY; + + // Bind the local socket to any local address (ie any available interface) + if (bind(sock, (struct sockaddr *) &adr_locale, longueur_adr_locale) == -1) { + printf("failed to bind\n"); + exit(1); + } + + int i=0; + while (1) { + // Receive a single message because we are lazy + recvfrom(sock, message, longueur_message, 0, NULL, NULL); + + // Afficher notre seule et unique triste message + afficher_message_source(message, longueur_message,i); + i++; + } + + exit(0); + + + + } + } +} +