From 9c856063717de1452805af4ec22c5abe4d7fa75c Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Fri, 20 Jan 2023 09:59:21 +0100 Subject: [PATCH] =?UTF-8?q?petits=20sauts=20m=C3=A9moires=20=C3=A0=20r?= =?UTF-8?q?=C3=A9gler=20dans=20le=20message=20=C3=A0=20envoyer.=20Boite=20?= =?UTF-8?q?aux=20lettres=20g=C3=A8re=20reception/emission?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- header/puit.h | 2 ++ header/source.h | 1 + header/tsock.h | 2 +- src/puit.c | 29 +++++++++++++++++++++++------ src/source.c | 14 +++++++++++++- src/tsock.c | 8 +++----- 6 files changed, 43 insertions(+), 13 deletions(-) diff --git a/header/puit.h b/header/puit.h index f6e1032..7559ba1 100644 --- a/header/puit.h +++ b/header/puit.h @@ -2,10 +2,12 @@ #define HEADER_PUIT #include "tsock.h" +#include "bal.h" int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,char * ipAddress,int isBAL); int initSocket(int socketType, struct sockaddr_in * socketStruct, int port, char * ipAddress); int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct, int isTCP); int modeBoiteAuxLettres(struct sockaddr_in socketStruct, int socketType, int port, char * ipAddress); +void receptionEmetteur(int sock, int tailleMessagePrevu, int * tailleMessageRecu, int emetteur, int recepteur, struct listeBAL *boiteAuxLettres); #endif \ No newline at end of file diff --git a/header/source.h b/header/source.h index d74f1a8..170d8fc 100644 --- a/header/source.h +++ b/header/source.h @@ -6,6 +6,7 @@ int launchSource(int nombreMessage,int tailleMessage,int isTCP,int port,char * i int sendMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in * socketStruct, int sizeSocketStruct, int isTCP); void connectTCP(int sock, struct sockaddr_in socketStruct, int tailleSocket); void modeEmetteur(int emetteur,int nombreMessage,int tailleMessage,int sock,struct sockaddr_in * socketStruct,int tailleSocketStruct); +void modeRecepteur(int recepteur,int sock,struct sockaddr_in * socketStruct,int tailleSocketStruct); void printAndVerif(char * sendingMessage,int tailleMessage,int longueurEmis, int count); #endif \ No newline at end of file diff --git a/header/tsock.h b/header/tsock.h index 0608e6c..ef94e93 100644 --- a/header/tsock.h +++ b/header/tsock.h @@ -21,7 +21,7 @@ void getNonOtpArgs(char ** argv, int argc, int * portNumber, char * ipAddress[]) void formatText(char * actualMessage, int num, int tailleMessage, char messageChar); int exitMax(int var,int tailleMax); -char * formatTextParam(int numEmetteur, int numRecepteur, int tailleMessage, int nbMessage); +char * formatTextParam(int modeParam, int numEmetteur, int numRecepteur, int tailleMessage, int nbMessage); char * formatTextMessage(char * message, int tailleMessage); int convertion(int nbr,char *numbuffer); int gestionOffset(char *actualMessage,int encadrementHaut,int encadrementBas,int nbr); diff --git a/src/puit.c b/src/puit.c index b72f668..7d407f1 100644 --- a/src/puit.c +++ b/src/puit.c @@ -1,5 +1,4 @@ #include "../header/puit.h" -#include "../header/bal.h" int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,char * ipAddress,int isBAL) { @@ -45,25 +44,43 @@ int modeBoiteAuxLettres(struct sockaddr_in socketStruct, int socketType, int por { n=1; oldSock = initSocket(socketType,&socketStruct,port,ipAddress); + printf("\n---init Socket !---\n"); listen(oldSock,5); sock = accept(oldSock,(struct sockaddr *)&socketStruct,(socklen_t * restrict)&longueurRecu); while(n>0) { n = read(sock,paramRecu,16); recuperationParam(paramRecu,¶m,&emetteur,&recepteur,&tailleMessage,&nbMessage); - char * messageRecu = malloc(sizeof(char)*tailleMessage); - n = read(sock,messageRecu,tailleMessage); - if(n>0) + switch(param) { - nouveauMessage(&boiteAuxLettres,emetteur,recepteur,messageRecu); - afficheListeBAL(boiteAuxLettres); + case 1: + printf("Renvoi de la boite aux lettres en mode recepteur."); + break; + case 2: + printf("Reception de messages en mode emission."); + receptionEmetteur(sock,tailleMessage,&n,emetteur,recepteur,&boiteAuxLettres); + break; + default: + printf("Message non reconnu."); + break; } } + afficheListeBAL(boiteAuxLettres); close(sock); close(oldSock); } } +void receptionEmetteur(int sock, int tailleMessagePrevu, int * tailleMessageRecu, int emetteur, int recepteur, struct listeBAL *boiteAuxLettres) +{ + char * messageRecu = malloc(sizeof(char)*tailleMessagePrevu); + *tailleMessageRecu = read(sock,messageRecu,tailleMessagePrevu); + if(*tailleMessageRecu>0) + { + nouveauMessage(boiteAuxLettres,emetteur,recepteur,messageRecu); + } +} + int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct, int isTCP) { char messageRecu[tailleMessage+1]; diff --git a/src/source.c b/src/source.c index 65327ea..526f023 100644 --- a/src/source.c +++ b/src/source.c @@ -15,6 +15,8 @@ int launchSource(int nombreMessage,int tailleMessage,int isTCP,int port,char * i if(recepteur != -1) { printf("Mode Recepteur, recois : %d\n",recepteur); + connectTCP(sock,socketSource,sizeof(socketSource)); + modeRecepteur(recepteur,sock,&socketSource,sizeof(socketSource)); return 0; } if(emetteur != -1) @@ -73,7 +75,8 @@ void modeEmetteur(int emetteur,int nombreMessage,int tailleMessage,int sock,stru char sendingMessage[tailleMessage],*paramMessage,*actualMessage,messageChar='a'; for(int i=0;i