From 9b2e4aa4b3170a4d706e89a4541033b641cc0978 Mon Sep 17 00:00:00 2001 From: BQUINTAN Date: Wed, 22 Apr 2020 10:51:04 +0200 Subject: [PATCH] Ajout BAL --- bal.h | 71 ++++ makefile | 4 +- tsock.h | 1077 ++++++++++++++++++++++++++-------------------------- tsock_p2 | Bin 0 -> 25320 bytes tsock_p2.c | 240 ++++++++++++ tsock_v2.c | 175 --------- tsock_v3 | Bin 25240 -> 25320 bytes tsock_v3.c | 378 +++++++++--------- 8 files changed, 1041 insertions(+), 904 deletions(-) create mode 100644 bal.h create mode 100644 tsock_p2 create mode 100644 tsock_p2.c delete mode 100644 tsock_v2.c diff --git a/bal.h b/bal.h new file mode 100644 index 0000000..add12b3 --- /dev/null +++ b/bal.h @@ -0,0 +1,71 @@ +// +// Created by Béranger Quintana | 3AE E +// + +#ifndef PROGC_BAL_H +#define PROGC_BAL_H +//--------------------------------------------------- +//---------------Structure Liste--------------------- +//--------------------------------------------------- + +typedef struct BAL +{ + int num_bal ; + struct LETTRE* lfirst ; + struct LETTRE* lcurrent ; + struct LETTRE* llast ; + struct BAL* suiv ; +}BAL; + +typedef struct LETTRE +{ + int num; + char* message ; + struct LETTRE* suiv ; +}; + +typedef struct LISTE { + struct BAL * bal_premier ; + struct BAL * bal_dernier ; + struct BAL * bal_courant ; +}LISTE_BAL; +//--------------------------------------------------- +// GESTION BAL + +LISTE_BAL* initialiser_bal(){ + + LISTE_BAL liste ; + liste = (LISTE_BAL)malloc(sizeof(struct LISTE)); + liste->bal_premier = NULL; + liste->bal_dernier = NULL; + liste->bal_courant = NULL; + return liste ; +} + +void ajouter_bal(int num, LISTE_BAL * liste){ + + BAL ma_bal = (BAL)malloc(sizeof(struct BAL)); + ma_bal->num_bal = num ; + ma_bal->l_premier=NULL; + ma_bal->l_dernier=NULL; + ma_bal->l_courant=NULL; + ma_bal->bal_suiv = NULL; + + + if (liste == NULL) + { + liste->bal_premier = ma_bal ; + liste->bal_dernier = ma_bal ; + } + else { + liste->bal_dernier->bal_suiv = ma_bal ; + liste->bal_dernier = ma_bal ; + } + liste->bal_courant = ma_bal ; +} + + +LISTE_BAL* + + +#endif //PROGC_BAL_H diff --git a/makefile b/makefile index fe88be5..2b06da4 100644 --- a/makefile +++ b/makefile @@ -1,3 +1,3 @@ -tsock: tsock_v3.c tsock.h - gcc tsock_v3.c -o tsock_v3 -g +tsock: tsock_p2.c tsock.h + gcc tsock_p2.c -o tsock_p2 -g diff --git a/tsock.h b/tsock.h index 7c6e3d9..85f8640 100644 --- a/tsock.h +++ b/tsock.h @@ -1,538 +1,539 @@ -//--------------------------PROG C ET RESEAUX----------------------- -//Nom : Quintana ----------------------------------------------- -//Prénom : Béranger ----------------------------------------------- -//Groupe : 3AE E ----------------------------------------------- -//------------------------------------------------------------------ - -#ifndef __tsock__ - -//--------------------------------------------------- -//-------------Déclaration des fonctions------------- -//--------------------------------------------------- - -void construire_message(char *message, char motif, int lg, int i); -void construire_message2(char *message, char motif, int lg, int i); -void afficher_message(char *message, int lg); -void envoi_UDP(int port, int nb_message , int lg_msg, char*dest); -void reception_UDP(int port, int nb_message , int lg_message); -void ClientTCP (int port, int nb_message , int lg_msg, char* dest); -void ServeurTCP(int port , int nb_message, int lg_msg); -void printbuffer(int n); -void printbuffer2(int n , char*message); - - - - -//--------------------------------------------------- -//-------------Définitions des fonctions------------- -//--------------------------------------------------- - -//-------------Construire message 2 ----------------- -void construire_message2(char *message, char motif, int lg, int i) -{ - - char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; - if (i>26) - motif=alphabet[i%26-1]; - else if (i=26) - motif='z'; - - else - motif = alphabet[i - 1]; - - - for (int j=0;j=10 & n<100) - { - printf("[---%d",n); - } - if (n>=100 & n<1000) - { - printf("[--%d",n); - } - if (n>=1000 & n<10000) - { - printf("[--%d",n); - } - if (n>=10000 & n<100000) - { - printf("[-%d",n); - } - if (n>=100000 & n<1000000) - { - printf("[%d",n); - } - if (n>=1000000) - { - printf("Trop de messages à envoyer (n>1000000 \n"); - exit(1); - } -} - - -//------------------PRINTBUFFER2---------------------- -void printbuffer2(int n , char*message) -{ - if (n>=100000) - { - printf("Trop de messages à envoyer (n>1000000 \n"); - exit(1); - } - - if (n<10) - { - for (int i=0 ; i<4 ; i++) - { - *(message+i)='-'; - } - //char nb[1]; - *(message+4)= n + '0'; - } - if (n>=10 & n<100) - { - char nb[2]; - - for (int i=0 ; i<3 ; i++) - { - *(message+i)='-'; - } - sprintf(nb,"%d",n); - *(message+3)=*nb; - n=n%10; - sprintf(nb,"%d", n); - *(message+4)=*nb; - } - if (n>=100 & n<1000) - { - char nb[3]; - for (int i=0 ; i<2 ; i++) - { - *(message+i)='-'; - } - sprintf(nb,"%d",n); - *(message+2)=*nb; - n=n%100; - sprintf(nb,"%d", n); - *(message+3)=*nb; - n=n%10; - sprintf(nb,"%d", n); - *(message+4)=*nb; - } - if (n>=1000 & n<10000) - { - int j=1000; - - char nb[4]; - for (int i=0 ; i<2 ; i++) - { - *(message+i)='-'; - } - - sprintf(nb,"%d",n); - *(message+1)=*nb; - n=n%1000; - sprintf(nb,"%d", n); - *(message+2)=*nb; - n=n%100; - sprintf(nb,"%d", n); - *(message+3)=*nb; - n=n%10; - sprintf(nb,"%d", n); - *(message+4)=*nb; - } - if (n>=10000 & n<100000) - { - char nb[4]; - for (int i=0 ; i<2 ; i++) - { - *(message+i)='-'; - } - sprintf(nb,"%d",n); - *(message)=*nb; - n=n%10000; - sprintf(nb,"%d", n); - *(message+1)=*nb; - n=n%1000; - sprintf(nb,"%d", n); - *(message+2)=*nb; - n=n%100; - sprintf(nb,"%d", n); - *(message+3)=*nb; - n=n%10; - sprintf(nb,"%d", n); - *(message+4)=*nb; - } - - -} - -//Construction des messages - -void construire_message(char *message, char motif, int lg, int i ) - -{ - char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; - if (i>26) - motif=alphabet[i%26-1]; - - else - motif = alphabet[i - 1]; - - - for (int j=0;jh_addr, hp->h_length); - //printf("Association IP OK\n"); - //printf("Nombre de messages à envoyer : %d\n", nb_mess); - - for (int i=1; i<=nb_mess ; i++) - { - construire_message(message,'a',lg_msg,i); - printf("SOURCE : Envoi n°%d (%d) [", i, lg_msg); - - - if((sent=sendto(sock,message,lg_msg,0,(struct sockaddr*)&addr_distant,sizeof(addr_distant)))==-1) - { - printf("Erreur sendto\n"); - exit(1); - } - printbuffer2(i,message); - afficher_message(message,sent); - } - - if(close(sock)==-1) //fermeture + test erreur à la fermeture - { - printf("Echec à la destruction du socket\n"); - exit(1); - } -} - -//---------------------------------------------------- -//------------------Reception UDP--------------------- -//---------------------------------------------------- - -void reception_UDP(int port, int nb_message, int lg_message) -{ - - int sock; - struct sockaddr_in addr_local,addr_distant; - int recv; - int lg_dist; - char *message=malloc(sizeof(char)*lg_message) ; - - if((sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) //création du socket + test erreur d'ouverture - { - printf("Erreur à la création du socket\n"); - exit(1); - } - - memset((char*)&addr_local,0,sizeof(addr_local));//reset de addr_local - addr_local.sin_family=AF_INET; //attribution des différents attributs de addr_local - addr_local.sin_port=port; - addr_local.sin_addr.s_addr=INADDR_ANY; //On dit que l'on veut recevoir sur n'importe quelle carte réseau de notre machine (=INADDR_ANY) - - - if ((bind(sock,(struct sockaddr*)&addr_local, sizeof(addr_local)))==-1) //bind de la réception + test erreur du bind - { - printf("Echec du Bind\n"); - exit(1); - } - - //printf("bind OK\n"); - - if (nb_message==-1) - nb_message=10; - - //printf("%d messages à recevoir\n",nb_message); - lg_dist=sizeof(addr_distant); - //printf("lg_dist initialisé\n"); - - for (int i=1 ; i<=nb_message ; i++) - { - - recv=recvfrom(sock,message,lg_message,0,(struct sockaddr*)&addr_distant,&lg_dist); - if (recv==-1) //process de réception (recvfrom natif à l'API socket, + test erreur - { - printf("Erreur receive from\n"); - exit(1); - } - else - { - printf("PUITS : Réception n°%d (%d) :",i,lg_message); - afficher_message(message,recv); - } - } - - if(close(sock)==-1) //fermeture + test erreur à la fermeture - { - printf("Echec à la destruction du socket\n"); - exit(1); - } -} - -//--------------------------------------------------------------- -//----------------ClientTCP <=> source=1------------------------- -//--------------------------------------------------------------- - -void ClientTCP (int port, int nb_message , int lg_msg , char* dest) -{ - //Déclarations - int sock; - struct sockaddr_in addr_distant ; - int lg_addr_distant=sizeof(addr_distant); - - struct hostent *hp; - char motif; - char * message=malloc(lg_msg*sizeof(char)); //Penser au free en fin de programme pour libérer l'espace mémoire - int envoi=-1; - -//--------------------------------------- -//--------Etablissement connexion-------- -//--------------------------------------- - - //Création socket - if((sock=socket(AF_INET,SOCK_STREAM,0))==-1) - { - printf("Erreur à l'ouverture du Socket Stream"); - exit(1); - } - - //Construction adresse socket distant - memset((char*)&addr_distant,0,sizeof(addr_distant)); - addr_distant.sin_family=AF_INET; //Internet - addr_distant.sin_port=port; //Numéro de Port - - //Affectation IP - if((hp=gethostbyname(dest))==NULL) - { - printf("Erreur de requête IP.\n"); - exit(1); - } - - memcpy((char*)&(addr_distant.sin_addr.s_addr), hp->h_addr , hp->h_length); - - //Demande de connexion - - if (connect(sock,(struct sockaddr *)&addr_distant,sizeof(addr_distant))==-1) - { - printf("Erreur lors de la connexion, en attente de la tentative suivante \n"); - - } - - //printf("Connexion Réussie !\n"); - -//----------------------------------------- -//----------TRANSFERT DE DONNEES----------- -//----------------------------------------- - - for (int i=1; i<=nb_message;i++) - { - printf("SOURCE : envoi n°%d (%d) [", i,lg_msg); - //Création du message - - construire_message(message,motif,lg_msg,i); - - printbuffer2(i,message); - afficher_message(message,lg_msg); - - //Envoi du message - - if ((envoi=write(sock,message,lg_msg/*,0,(struct sockaddr*)&addr_distant,lg_addr_distant)*/))==-1) - { - printf("Echec de l'envoi du message (fonction write en défaut)\n"); - exit(1); - } - } - - //Fermeture connexion - - if(shutdown(sock,2)==-1) - { - printf("Erreur à la fermeture de la connexion TCP \n"); - exit(1); - } - - if (close(sock)==-1) - { - printf("Echec de la fermeture du socket distant"); - exit(1); - } - - free(message); - - printf("Envoi effectué avec succès\n"); -} - -//--------------------------------------------------------------- -//----------------ServeurTCP <=> source=0------------------------- -//--------------------------------------------------------------- - -void ServeurTCP(int port , int nb_message, int lg_msg) -{ - //Déclarations - int sock , sock2; //sock bis local orienté échanges - struct sockaddr* addr_distant; - struct sockaddr_in addr_local; - int lg_addr_distant=sizeof(addr_distant); - int lg_addr_local=sizeof(addr_local); - struct hostent *hp; - char motif; - char * message=malloc(lg_msg*sizeof(char)); //Penser au free en fin de programme pour libérer l'espace mémoire - int lg_recv=-1; - -//------------- -//Connexion --- -//------------- - - //Création socket local - - if ((sock=socket(AF_INET,SOCK_STREAM,0))==-1) - { - printf("Echec de la création d'un socket local\n"); - exit(1); - } - - //Construction adresse socket local | Affectation port et domaine - - memset((char*)&addr_local, 0 , sizeof(addr_local)); - addr_local.sin_family=AF_INET; - addr_local.sin_addr.s_addr=INADDR_ANY; - addr_local.sin_port=port; - - //printf("Socket créé addressé\n"); - - //Bind - - if (bind(sock,(struct sockaddr *)&addr_local, lg_addr_local)==-1) - { - printf("Echec du bind.\n"); - exit(1); - } - //printf("bind effectué\n"); - - //Check connexions entrantes - - if (listen(sock,100)<0) - { - printf("Trop de connexions en attentes, échec de la demande\n"); - exit(1); - } - - //rintf("listen accepté\n"); - - - //Accept connexion - - - if (nb_message==-1) - { - nb_message=10; - } - if ((sock2 = accept(sock,(struct sockaddr*)&addr_distant,&lg_addr_distant))==-1) - { - printf("Refus de connexion par le serveur\n"); - exit(1); - } - //printf("Accept validé, %d messages à recevoir\n",nb_message); - //Reception des messages au niveau du socket d'échange - - for (int i=1;i<=nb_message;i++) - { - printf("PUITS : Réception n°%d (%d) [" , i , lg_msg); - if((lg_recv=read(sock2,message, lg_msg))<0) - { - printf("Echec de la lecture du message entrant \n"); - exit(1); - } - afficher_message(message, lg_recv); - } - //Fermeture connexion - - if ((shutdown(sock , 2))==-1) - { - printf("Erreur à la fermeture de la connexion : shutdown\n"); - exit(1); - } - - //Ciao le socket - if(close(sock)==-1) - { - printf("Impossible de fermer le socket"); - } - - free(message); - - -} - -#endif +//--------------------------PROG C ET RESEAUX----------------------- +//Nom : Quintana ----------------------------------------------- +//Prénom : Béranger ----------------------------------------------- +//Groupe : 3AE E ----------------------------------------------- +//------------------------------------------------------------------ + +#ifndef __tsock__ + +//--------------------------------------------------- +//-------------Déclaration des fonctions------------- +//--------------------------------------------------- + +void construire_message(char *message, char motif, int lg, int i); +void construire_message2(char *message, char motif, int lg, int i); +void afficher_message(char *message, int lg); +void envoi_UDP(int port, int nb_message , int lg_msg, char*dest); +void reception_UDP(int port, int nb_message , int lg_message); +void ClientTCP (int port, int nb_message , int lg_msg, char* dest); +void ServeurTCP(int port , int nb_message, int lg_msg); +void printbuffer(int n); +void printbuffer2(int n , char*message); + + + + +//--------------------------------------------------- +//-------------Définitions des fonctions------------- +//--------------------------------------------------- + +//-------------Construire message 2 ----------------- +void construire_message2(char *message, char motif, int lg, int i) +{ + + char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; + if (i>26) + motif=alphabet[i%26-1]; + else if (i=26) + motif='z'; + + else + motif = alphabet[i - 1]; + + + for (int j=0;j=10 & n<100) + { + printf("[---%d",n); + } + if (n>=100 & n<1000) + { + printf("[--%d",n); + } + if (n>=1000 & n<10000) + { + printf("[--%d",n); + } + if (n>=10000 & n<100000) + { + printf("[-%d",n); + } + if (n>=100000 & n<1000000) + { + printf("[%d",n); + } + if (n>=1000000) + { + printf("Trop de messages à envoyer (n>1000000 \n"); + exit(1); + } +} + + +//------------------PRINTBUFFER2---------------------- +void printbuffer2(int n , char*message) +{ + if (n>=100000) + { + printf("Trop de messages à envoyer (n>1000000 \n"); + exit(1); + } + + if (n<10) + { + for (int i=0 ; i<4 ; i++) + { + *(message+i)='-'; + } + //char nb[1]; + *(message+4)= n + '0'; + } + if (n>=10 & n<100) + { + char nb[2]; + + for (int i=0 ; i<3 ; i++) + { + *(message+i)='-'; + } + sprintf(nb,"%d",n); + *(message+3)=*nb; + n=n%10; + sprintf(nb,"%d", n); + *(message+4)=*nb; + } + if (n>=100 & n<1000) + { + char nb[3]; + for (int i=0 ; i<2 ; i++) + { + *(message+i)='-'; + } + sprintf(nb,"%d",n); + *(message+2)=*nb; + n=n%100; + sprintf(nb,"%d", n); + *(message+3)=*nb; + n=n%10; + sprintf(nb,"%d", n); + *(message+4)=*nb; + } + if (n>=1000 & n<10000) + { + int j=1000; + + char nb[4]; + for (int i=0 ; i<2 ; i++) + { + *(message+i)='-'; + } + + sprintf(nb,"%d",n); + *(message+1)=*nb; + n=n%1000; + sprintf(nb,"%d", n); + *(message+2)=*nb; + n=n%100; + sprintf(nb,"%d", n); + *(message+3)=*nb; + n=n%10; + sprintf(nb,"%d", n); + *(message+4)=*nb; + } + if (n>=10000 & n<100000) + { + char nb[4]; + for (int i=0 ; i<2 ; i++) + { + *(message+i)='-'; + } + sprintf(nb,"%d",n); + *(message)=*nb; + n=n%10000; + sprintf(nb,"%d", n); + *(message+1)=*nb; + n=n%1000; + sprintf(nb,"%d", n); + *(message+2)=*nb; + n=n%100; + sprintf(nb,"%d", n); + *(message+3)=*nb; + n=n%10; + sprintf(nb,"%d", n); + *(message+4)=*nb; + } + + +} + +//Construction des messages + +void construire_message(char *message, char motif, int lg, int i ) + +{ + char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; + if (i>26) + motif=alphabet[i%26-1]; + + else + motif = alphabet[i - 1]; + + + for (int j=0;jh_addr, hp->h_length); + //printf("Association IP OK\n"); + //printf("Nombre de messages à envoyer : %d\n", nb_mess); + + for (int i=1; i<=nb_mess ; i++) + { + construire_message(message,'a',lg_msg,i); + printf("SOURCE : Envoi n°%d (%d) [", i, lg_msg); + + + if((sent=sendto(sock,message,lg_msg,0,(struct sockaddr*)&addr_distant,sizeof(addr_distant)))==-1) + { + printf("Erreur sendto\n"); + exit(1); + } + printbuffer2(i,message); + afficher_message(message,sent); + } + + if(close(sock)==-1) //fermeture + test erreur à la fermeture + { + printf("Echec à la destruction du socket\n"); + exit(1); + } +} + +//---------------------------------------------------- +//------------------Reception UDP--------------------- +//---------------------------------------------------- + +void reception_UDP(int port, int nb_message, int lg_message) +{ + + int sock; + struct sockaddr_in addr_local,addr_distant; + int recv; + int lg_dist; + char *message=malloc(sizeof(char)*lg_message) ; + + if((sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) //création du socket + test erreur d'ouverture + { + printf("Erreur à la création du socket\n"); + exit(1); + } + + memset((char*)&addr_local,0,sizeof(addr_local));//reset de addr_local + addr_local.sin_family=AF_INET; //attribution des différents attributs de addr_local + addr_local.sin_port=port; + addr_local.sin_addr.s_addr=INADDR_ANY; //On dit que l'on veut recevoir sur n'importe quelle carte réseau de notre machine (=INADDR_ANY) + + + if ((bind(sock,(struct sockaddr*)&addr_local, sizeof(addr_local)))==-1) //bind de la réception + test erreur du bind + { + printf("Echec du Bind\n"); + exit(1); + } + + //printf("bind OK\n"); + + if (nb_message==-1) + nb_message=10; + + //printf("%d messages à recevoir\n",nb_message); + lg_dist=sizeof(addr_distant); + //printf("lg_dist initialisé\n"); + + for (int i=1 ; i<=nb_message ; i++) + { + + recv=recvfrom(sock,message,lg_message,0,(struct sockaddr*)&addr_distant,&lg_dist); + if (recv==-1) //process de réception (recvfrom natif à l'API socket, + test erreur + { + printf("Erreur receive from\n"); + exit(1); + } + else + { + printf("PUITS : Réception n°%d (%d) :",i,lg_message); + afficher_message(message,recv); + } + } + + if(close(sock)==-1) //fermeture + test erreur à la fermeture + { + printf("Echec à la destruction du socket\n"); + exit(1); + } +} + +//--------------------------------------------------------------- +//----------------ClientTCP <=> source=1------------------------- +//--------------------------------------------------------------- + +void ClientTCP (int port, int nb_message , int lg_msg , char* dest) +{ + //Déclarations + int sock; + struct sockaddr_in addr_distant ; + int lg_addr_distant=sizeof(addr_distant); + + struct hostent *hp; + char motif; + char * message=malloc(lg_msg*sizeof(char)); //Penser au free en fin de programme pour libérer l'espace mémoire + int envoi=-1; + +//--------------------------------------- +//--------Etablissement connexion-------- +//--------------------------------------- + + //Création socket + if((sock=socket(AF_INET,SOCK_STREAM,0))==-1) + { + printf("Erreur à l'ouverture du Socket Stream"); + exit(1); + } + + //Construction adresse socket distant + memset((char*)&addr_distant,0,sizeof(addr_distant)); + addr_distant.sin_family=AF_INET; //Internet + addr_distant.sin_port=port; //Numéro de Port + + //Affectation IP + if((hp=gethostbyname(dest))==NULL) + { + printf("Erreur de requête IP.\n"); + exit(1); + } + + memcpy((char*)&(addr_distant.sin_addr.s_addr), hp->h_addr , hp->h_length); + + //Demande de connexion + + if (connect(sock,(struct sockaddr *)&addr_distant,sizeof(addr_distant))==-1) + { + printf("Erreur lors de la connexion, en attente de la tentative suivante \n"); + + } + + //printf("Connexion Réussie !\n"); + +//----------------------------------------- +//----------TRANSFERT DE DONNEES----------- +//----------------------------------------- + + for (int i=1; i<=nb_message;i++) + { + printf("SOURCE : envoi n°%d (%d) [", i,lg_msg); + //Création du message + + construire_message(message,motif,lg_msg,i); + + printbuffer2(i,message); + afficher_message(message,lg_msg); + + //Envoi du message + + if ((envoi=write(sock,message,lg_msg/*,0,(struct sockaddr*)&addr_distant,lg_addr_distant)*/))==-1) + { + printf("Echec de l'envoi du message (fonction write en défaut)\n"); + exit(1); + } + } + + //Fermeture connexion + + if(shutdown(sock,2)==-1) + { + printf("Erreur à la fermeture de la connexion TCP \n"); + exit(1); + } + + if (close(sock)==-1) + { + printf("Echec de la fermeture du socket distant"); + exit(1); + } + + free(message); + + printf("Envoi effectué avec succès\n"); +} + +//--------------------------------------------------------------- +//----------------ServeurTCP <=> source=0------------------------- +//--------------------------------------------------------------- + +void ServeurTCP(int port , int nb_message, int lg_msg) +{ + //Déclarations + int sock , sock2; //sock bis local orienté échanges + struct sockaddr* addr_distant; + struct sockaddr_in addr_local; + int lg_addr_distant=sizeof(addr_distant); + int lg_addr_local=sizeof(addr_local); + struct hostent *hp; + char motif; + char * message=malloc(lg_msg*sizeof(char)); //Penser au free en fin de programme pour libérer l'espace mémoire + int lg_recv=-1; + +//------------- +//Connexion --- +//------------- + + //Création socket local + + if ((sock=socket(AF_INET,SOCK_STREAM,0))==-1) + { + printf("Echec de la création d'un socket local\n"); + exit(1); + } + + //Construction adresse socket local | Affectation port et domaine + + memset((char*)&addr_local, 0 , sizeof(addr_local)); + addr_local.sin_family=AF_INET; + addr_local.sin_addr.s_addr=INADDR_ANY; + addr_local.sin_port=port; + + //printf("Socket créé addressé\n"); + + //Bind + + if (bind(sock,(struct sockaddr *)&addr_local, lg_addr_local)==-1) + { + printf("Echec du bind.\n"); + exit(1); + } + //printf("bind effectué\n"); + + //Check connexions entrantes + + if (listen(sock,100)<0) + { + printf("Trop de connexions en attentes, échec de la demande\n"); + exit(1); + } + + //rintf("listen accepté\n"); + + + //Accept connexion + + + if (nb_message==-1) + { + nb_message=10; + } + if ((sock2 = accept(sock,(struct sockaddr*)&addr_distant,&lg_addr_distant))==-1) + { + printf("Refus de connexion par le serveur\n"); + exit(1); + } + //printf("Accept validé, %d messages à recevoir\n",nb_message); + //Reception des messages au niveau du socket d'échange + + for (int i=1;i<=nb_message;i++) + { + printf("PUITS : Réception n°%d (%d) [" , i , lg_msg); + if((lg_recv=read(sock2,message, lg_msg))<0) + { + printf("Echec de la lecture du message entrant \n"); + exit(1); + } + afficher_message(message, lg_recv); + } + //Fermeture connexion + + if ((shutdown(sock , 2))==-1) + { + printf("Erreur à la fermeture de la connexion : shutdown\n"); + exit(1); + } + + //Ciao le socket + if(close(sock)==-1) + { + printf("Impossible de fermer le socket"); + } + + free(message); + + +} + +#endif diff --git a/tsock_p2 b/tsock_p2 new file mode 100644 index 0000000000000000000000000000000000000000..4f45a392251e4e11782586e952963f8c4efe633c GIT binary patch literal 25320 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 R@sGcQu`9H%Wljm8@;}-y9Bu#r literal 0 HcmV?d00001 diff --git a/tsock_p2.c b/tsock_p2.c new file mode 100644 index 0000000..071d6e7 --- /dev/null +++ b/tsock_p2.c @@ -0,0 +1,240 @@ +//--------------------------PROG C ET RESEAUX----------------------- +//Nom : Quintana ----------------------------------------------- +//Prénom : Béranger ----------------------------------------------- +//Groupe : 3AE E ----------------------------------------------- +//------------------------------------------------------------------ + + +/* 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 +/* fonctions de tsock*/ +#include "tsock.h" +/*fonctions de BAL*/ +#include "bal.h" +/* pour afficher l'adresse d'un socket */ +#include + + +/********************************************************************** +Programme Principal +**********************************************************************/ + +void main (int argc, char **argv) +{ + + //Déclarations + + int c; + extern char *optarg; + extern int optind; + int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */ + int source = -1 ; /* 0=puits, 1=source */ + int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp + struct hostent *hp; + int bal=-1; + int port = -1; //Numéro de port + int recep=-1; + port =htons(port); + + char *dest ; + int lg =30; + + while ((c = getopt(argc, argv, "pn:sul:be:r:")) != -1) + { + + switch (c) + { + case 'p': + if (source == 1) + { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1); + } + source = 0; + break; + + case 's': + if (source == 0) + { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1) ; + } + dest=argv[argc-2]; + source = 1; + break; + + case 'n': + nb_message = atoi(optarg); + if (nb_message>100000) + { + printf("Trop d'envois, n> 100 000\n"); + exit (1); + } + break; + + case 'u': + tcp=0; + break; + + case 'l': + lg = atoi(optarg); + break; + + case 'b' : + bal=1; + break; + + case 'e' : + if (recep==1) + { + printf("On ne peut pas être émetteur et récepteur, -r ou -e, pas les deux\n"); + exit(1); + } + + bal=1; + recep=0; + + break; + + case 'r' : + if (recep==0) + { + printf("On ne peut être émetteur et récepteur en même temps : -e ou -r mais pas les deux\n"); + exit(1); + } + bal=1; + recep=1; + + + break; + + + default: + printf("usage: cmd [-p|-s|-b|-e|-r][-n ##]\n"); + break; + } + } + + if ((port=atoi(argv[argc-1]))!=-1) + { + port=htons(port); + } + dest=argv[argc-2]; + + if (source == -1 & bal ==-1) + { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1) ; + } + if (bal == -1) + { + if (source == 1) + printf("SOURCE : "); + else + printf("PUITS : "); + + + if (tcp==1) + printf("Protocole de transport : TCP | "); + + else + printf("Protocole de transport : UDP | "); + + if (nb_message == -1) + { + + if (source == 1) + { + nb_message = 10; + printf("Nombre d'envois : %d | ", nb_message); + } + else + printf("Nombre de receptions : infini | "); + } + + else + { + if (source == 1) + { + + printf("Nombre d'envois = %d | ", nb_message); + } + else + { + printf("nb de tampons à recevoir = %d | ",nb_message); + } + } + + printf("Destinataire : %s\n", dest); + + + //Envoi de message, Source en UDP + + int length_addr_dist; + length_addr_dist=sizeof(struct sockaddr_in); + + + if(source==1 & tcp==0) + { + envoi_UDP(port,nb_message,lg,dest); + } + + //PUITS de réception en UDP + + else if (source==0 & tcp==0) + { + reception_UDP(port,nb_message,lg); + } + + + else if (source==0 & tcp==1) + { + + ServeurTCP(port, nb_message, lg); + } + + else if (source==1 & tcp==1) + { + + ClientTCP(port,nb_message,lg,dest); + } + } + + else + { + if (bal==1 &recep==0) + { + printf("On fait un serveur BAL\n"); + } + + else if (bal==1 & recep ==0) + { + printf("On est emetteur de lettres\n"); + } + + else if(bal==1 &recep == 1) + { + printf("On récupère des lettres \n"); + } + } + + + exit(0); +} diff --git a/tsock_v2.c b/tsock_v2.c deleted file mode 100644 index e8b4e9d..0000000 --- a/tsock_v2.c +++ /dev/null @@ -1,175 +0,0 @@ -//--------------------------PROG C ET RESEAUX----------------------- -//Nom : Quintana ----------------------------------------------- -//Prénom : Béranger ----------------------------------------------- -//Groupe : 3AE E ----------------------------------------------- -//------------------------------------------------------------------ - - -/* 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 -/* fonctions de tsock*/ -#include "tsock.h" -/* pour afficher l'adresse d'un socket */ -#include - - -/********************************************************************** -Programme Principal -**********************************************************************/ - -void main (int argc, char **argv) -{ - - //Déclarations - - int c; - extern char *optarg; - extern int optind; - int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */ - int source = -1 ; /* 0=puits, 1=source */ - int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp - struct hostent *hp; - - int port = -1; //Numéro de port - port =htons(port); - - char *dest ; - int lg_local; - - while ((c = getopt(argc, argv, "pn:su")) != -1) { - - - switch (c) { - case 'p': - if (source == 1) { - printf("usage: cmd [-p|-s][-n ##]\n"); - exit(1); - } - source = 0; - break; - - case 's': - if (source == 0) { - printf("usage: cmd [-p|-s][-n ##]\n"); - exit(1) ; - } - dest=argv[argc-2]; - source = 1; - break; - - case 'n': - nb_message = atoi(optarg); - break; - - case 'u': - if (tcp ==0){ - printf("usage : cmd [-p| -s] [-u][-n##]\n"); - } - tcp=0; - break; - - default: - printf("usage: cmd [-p|-s][-n ##]\n"); - break; - } - } - - if ((port=atoi(argv[argc-1]))!=-1) - { - port=htons(port); - } - dest=argv[argc-2]; - - - if (source == -1) - { - printf("usage: cmd [-p|-s][-n ##]\n"); - exit(1) ; - } - if (tcp==1) - { - printf("On utilise TCP\n"); - } - else - {printf("On utilise UDP\n");} - - - if (source == 1) - printf("on est dans le source\n"); - else - printf("on est dans le puits\n"); - - - if (nb_message != -1) - { - if (source == 1) - printf("nb de tampons à envoyer : %d\n", nb_message); - else - printf("nb de tampons à recevoir : %d\n", nb_message); - } - else - { - if (source == 1) - { - nb_message = 10 ; - printf("nb de tampons à envoyer = 10 par défaut\n"); - } - else - printf("nb de tampons à recevoir = infini\n"); - - } - - - //Envoi de message, Source en UDP - - int length_addr_dist; - length_addr_dist=sizeof(struct sockaddr_in); - - - - if(source==1 & tcp==0) - { - envoi_UDP(nb_message,port,30); - } - - //PUITS de réception en UDP - - else if (source==0 & tcp==0) - { - reception_UDP(port,nb_message,30); - } - - - else if (source==0 & tcp==1) - { - printf("On utilise TCP en puits\n"); - ServeurTCP(port, nb_message, 30); - } - - else if (source==1 & tcp==1) - { - printf("On utilise TCP en source\n"); - ClientTCP(port,nb_message,30); - } - - exit(0); -} - - diff --git a/tsock_v3 b/tsock_v3 index a5be0258e2693a7fffb1c586316c6795886ae247..394f23376733949c4238f6480b536d16f343442c 100755 GIT binary patch delta 4264 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 F{u`)}I#vJx delta 3558 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 -/* 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 -/* fonctions de tsock*/ -#include "tsock.h" -/* pour afficher l'adresse d'un socket */ -#include - - -/********************************************************************** -Programme Principal -**********************************************************************/ - -void main (int argc, char **argv) -{ - - //Déclarations - - int c; - extern char *optarg; - extern int optind; - int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */ - int source = -1 ; /* 0=puits, 1=source */ - int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp - struct hostent *hp; - - int port = -1; //Numéro de port - port =htons(port); - - char *dest ; - int lg =30; - - while ((c = getopt(argc, argv, "pn:sul:")) != -1) - { - - switch (c) - { - case 'p': - if (source == 1) - { - printf("usage: cmd [-p|-s][-n ##]\n"); - exit(1); - } - source = 0; - break; - - case 's': - if (source == 0) - { - printf("usage: cmd [-p|-s][-n ##]\n"); - exit(1) ; - } - dest=argv[argc-2]; - source = 1; - break; - - case 'n': - nb_message = atoi(optarg); - if (nb_message>100000) - { - printf("Trop d'envois, n> 100 000\n"); - exit (1); - } - break; - - case 'u': - tcp=0; - break; - - case 'l': - lg = atoi(optarg); - break; - - default: - printf("usage: cmd [-p|-s][-n ##]\n"); - break; - } - } - - if ((port=atoi(argv[argc-1]))!=-1) - { - port=htons(port); - } - dest=argv[argc-2]; - - if (source == -1) - { - printf("usage: cmd [-p|-s][-n ##]\n"); - exit(1) ; - } - - if (source == 1) - printf("SOURCE : "); - else - printf("PUITS : "); - - - if (tcp==1) - printf("Protocole de transport : TCP | "); - - else - printf("Protocole de transport : UDP | "); - - if (nb_message == -1) - { - - if (source == 1) - { - nb_message = 10; - printf("Nombre d'envois : %d | ", nb_message); - } - else - printf("Nombre de receptions : infini | "); - } - - else - { - if (source == 1) - { - - printf("Nombre d'envois = %d | ", nb_message); - } - else - { - printf("nb de tampons à recevoir = %d | ",nb_message); - } - } - - printf("Destinataire : %s\n", dest); - - - //Envoi de message, Source en UDP - - int length_addr_dist; - length_addr_dist=sizeof(struct sockaddr_in); - - - if(source==1 & tcp==0) - { - envoi_UDP(port,nb_message,lg,dest); - } - - //PUITS de réception en UDP - - else if (source==0 & tcp==0) - { - reception_UDP(port,nb_message,lg); - } - - - else if (source==0 & tcp==1) - { - - ServeurTCP(port, nb_message, lg); - } - - else if (source==1 & tcp==1) - { - - ClientTCP(port,nb_message,lg,dest); - } - - exit(0); -} - - +//--------------------------PROG C ET RESEAUX----------------------- +//Nom : Quintana ----------------------------------------------- +//Prénom : Béranger ----------------------------------------------- +//Groupe : 3AE E ----------------------------------------------- +//------------------------------------------------------------------ + + +/* 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 +/* fonctions de tsock*/ +#include "tsock.h" +/* pour afficher l'adresse d'un socket */ +#include + + +/********************************************************************** +Programme Principal +**********************************************************************/ + +void main (int argc, char **argv) +{ + + //Déclarations + + int c; + extern char *optarg; + extern int optind; + int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */ + int source = -1 ; /* 0=puits, 1=source */ + int tcp=1; //tcp=1 => tcp ; tcp=0 =>udp + struct hostent *hp; + + int port = -1; //Numéro de port + port =htons(port); + + char *dest ; + int lg =30; + + while ((c = getopt(argc, argv, "pn:sul:")) != -1) + { + + switch (c) + { + case 'p': + if (source == 1) + { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1); + } + source = 0; + break; + + case 's': + if (source == 0) + { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1) ; + } + dest=argv[argc-2]; + source = 1; + break; + + case 'n': + nb_message = atoi(optarg); + if (nb_message>100000) + { + printf("Trop d'envois, n> 100 000\n"); + exit (1); + } + break; + + case 'u': + tcp=0; + break; + + case 'l': + lg = atoi(optarg); + break; + + default: + printf("usage: cmd [-p|-s][-n ##]\n"); + break; + } + } + + if ((port=atoi(argv[argc-1]))!=-1) + { + port=htons(port); + } + dest=argv[argc-2]; + + if (source == -1) + { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1) ; + } + + if (source == 1) + printf("SOURCE : "); + else + printf("PUITS : "); + + + if (tcp==1) + printf("Protocole de transport : TCP | "); + + else + printf("Protocole de transport : UDP | "); + + if (nb_message == -1) + { + + if (source == 1) + { + nb_message = 10; + printf("Nombre d'envois : %d | ", nb_message); + } + else + printf("Nombre de receptions : infini | "); + } + + else + { + if (source == 1) + { + + printf("Nombre d'envois = %d | ", nb_message); + } + else + { + printf("nb de tampons à recevoir = %d | ",nb_message); + } + } + + printf("Destinataire : %s\n", dest); + + + //Envoi de message, Source en UDP + + int length_addr_dist; + length_addr_dist=sizeof(struct sockaddr_in); + + + if(source==1 & tcp==0) + { + envoi_UDP(port,nb_message,lg,dest); + } + + //PUITS de réception en UDP + + else if (source==0 & tcp==0) + { + reception_UDP(port,nb_message,lg); + } + + + else if (source==0 & tcp==1) + { + + ServeurTCP(port, nb_message, lg); + } + + else if (source==1 & tcp==1) + { + + ClientTCP(port,nb_message,lg,dest); + } + + exit(0); +} + +