IP non demandée pour -p ou -b. Modification sur launchPuit des arguments.

This commit is contained in:
Yohan Boujon 2023-01-24 16:49:42 +01:00
parent a5180da73f
commit 44ae8aedea
5 changed files with 37 additions and 26 deletions

View file

@ -12,11 +12,10 @@
* @param tailleMessage int, la taille de chacun de ces messages. * @param tailleMessage int, la taille de chacun de ces messages.
* @param isTCP int, 1 -> TCP, 0 -> UDP * @param isTCP int, 1 -> TCP, 0 -> UDP
* @param port int, numéro du port * @param port int, numéro du port
* @param ipAddress char *, adresse IP
* @param isBAL int, 1-> Mode Boite aux Lettres * @param isBAL int, 1-> Mode Boite aux Lettres
* @return int 0-> si réussite, autre sinon * @return int 0-> si réussite, autre sinon
*/ */
int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,char * ipAddress,int isBAL); int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,int isBAL);
/** /**
* @brief Pour un nombre de message donné (-1 -> infini) recevra des messages avec une taille précise. * @brief Pour un nombre de message donné (-1 -> infini) recevra des messages avec une taille précise.
@ -24,12 +23,12 @@ int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,char * ipA
* Dans le cas d'UDP si nombreMessage = -1 (infini) écoutera à l'infini la source. Pour TCP fermera la connexion * Dans le cas d'UDP si nombreMessage = -1 (infini) écoutera à l'infini la source. Pour TCP fermera la connexion
* une fois la connexion finie [A améliorer]. * une fois la connexion finie [A améliorer].
* *
* @param nombreMessages * @param nombreMessage int, le nombre de message à envoyer.
* @param tailleMessage * @param tailleMessage int, la taille de chacun de ces messages.
* @param sock * @param sock int, socket premettant d'utiliser la primitive readRecvFrom().
* @param socketStruct * @param socketStruct struct sockaddr_in , la structure du socket.
* @param isTCP * @param isTCP int, 1 -> TCP, 0 -> UDP.
* @return int * @return int 0 si réussi.
*/ */
int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct, int isTCP); int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct, int isTCP);

View file

@ -69,8 +69,9 @@ void initStructSocket(struct sockaddr_in *socketTempStruct, int source, int port
* @param argc int, nombre d'arguments (IP -> argc-1 et Port -> argc-2) * @param argc int, nombre d'arguments (IP -> argc-1 et Port -> argc-2)
* @param portNumber int *, numéro du port retourné * @param portNumber int *, numéro du port retourné
* @param ipAddress char **, pointeur faire une chaîne de caractère de l'adresse ip retournée * @param ipAddress char **, pointeur faire une chaîne de caractère de l'adresse ip retournée
* @param portOnly bool, mode portOnly pour -s ou -b
*/ */
void getNonOtpArgs(char ** argv, int argc, int * portNumber, char * ipAddress[]); void getNonOtpArgs(char ** argv, int argc, int * portNumber, char * ipAddress[], bool portOnly);
/** /**
* @brief [utile pour source.c] à partir d'un numéro, d'un message et d'une taille * @brief [utile pour source.c] à partir d'un numéro, d'un message et d'une taille

View file

@ -5,7 +5,7 @@
int main (int argc, char **argv) int main (int argc, char **argv)
{ {
char usageChar[100]="usage: cmd [-p|-s]|[-u][-u|-r ##|-e ##|-b][-n ##][-l ##] port ipAdress\n"; char usageChar[100]="usage: cmd [-p|-s][-u]|[-u|-r ##|-e ##|-b][-n ##][-l ##] port ipAdress\n";
//testProtocol(); //testProtocol();
//bal(); //bal();
char *ipAddress; char *ipAddress;
@ -71,25 +71,29 @@ int main (int argc, char **argv)
break; break;
} }
} }
bool serverMode = (isBAL || source==0);
if (source == -1){ if (source == -1){
printf("-p|-s non present !\n"); printf("-p|-s non present !\n");
printf("%s",usageChar); printf("%s",usageChar);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if(argc != optind+2) if((argc != optind+1) && serverMode){
{ printf("ip non present !\n");
printf("%s",usageChar);
exit(EXIT_FAILURE);
}
else if((argc != optind+2) && !serverMode){
printf("ip ou port non present !\n"); printf("ip ou port non present !\n");
printf("%s",usageChar); printf("%s",usageChar);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if(tailleMessage == -1) if(tailleMessage == -1){
{
tailleMessage = 30; tailleMessage = 30;
} }
getNonOtpArgs(argv, argc, &port, &ipAddress); getNonOtpArgs(argv, argc, &port, &ipAddress, serverMode);
setNbMessage(&nb_message,source); setNbMessage(&nb_message,source);
printInfo(source,tcp,nb_message,tailleMessage,port,ipAddress); serverMode ? printInfo(source,tcp,nb_message,tailleMessage,port,"non precise") : printInfo(source,tcp,nb_message,tailleMessage,port,ipAddress);
if(source) if(source)
{ {
@ -97,7 +101,7 @@ int main (int argc, char **argv)
} }
else else
{ {
launchPuit(nb_message,tailleMessage,tcp,port,ipAddress,isBAL); launchPuit(nb_message,tailleMessage,tcp,port,isBAL);
} }
return(EXIT_SUCCESS); return(EXIT_SUCCESS);
} }

View file

@ -1,6 +1,6 @@
#include "../header/puit.h" #include "../header/puit.h"
int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,char * ipAddress,int isBAL) int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,int isBAL)
{ {
int sock,socketType; int sock,socketType;
struct sockaddr_in socketPuit; struct sockaddr_in socketPuit;
@ -11,11 +11,11 @@ int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,char * ipA
if(isBAL) if(isBAL)
{ {
printf("Mode Boîte aux Lettres\n"); printf("Mode Boîte aux Lettres\n");
modeBoiteAuxLettres(socketPuit,SOCK_STREAM,port,ipAddress); modeBoiteAuxLettres(socketPuit,SOCK_STREAM,port,"localhost");
return 0; return 0;
} }
/*Sinon on initialise le socket de base et on rentre dans receiveMultipleData() -> on ferme le socket avant*/ /*Sinon on initialise le socket de base et on rentre dans receiveMultipleData() -> on ferme le socket avant*/
sock = initSocket(socketType,&socketPuit,port,ipAddress); sock = initSocket(socketType,&socketPuit,port,"localhost");
receiveMultipleData(nombreMessage,tailleMessage,sock,socketPuit,isTCP); receiveMultipleData(nombreMessage,tailleMessage,sock,socketPuit,isTCP);
close(sock); close(sock);
return 0; return 0;

View file

@ -56,13 +56,20 @@ void initStructSocket(struct sockaddr_in *socketTempStruct, int source, int port
} }
} }
void getNonOtpArgs(char ** argv, int argc, int * portNumber, char ** ipAddress) void getNonOtpArgs(char ** argv, int argc, int * portNumber, char * ipAddress[], bool portOnly)
{
if(portOnly)
{
*portNumber = atoi(argv[argc-1]);
}
else
{ {
*portNumber = atoi(argv[argc-2]); *portNumber = atoi(argv[argc-2]);
*ipAddress = NULL; *ipAddress = NULL;
*ipAddress = (char *)malloc(sizeof(argv[argc-1])); *ipAddress = (char *)malloc(sizeof(argv[argc-1]));
strcpy(*ipAddress,argv[argc-1]); strcpy(*ipAddress,argv[argc-1]);
} }
}
void formatText(char * actualMessage, int num, int tailleMessage, char messageChar) void formatText(char * actualMessage, int num, int tailleMessage, char messageChar)
{ {