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 isTCP int, 1 -> TCP, 0 -> UDP
* @param port int, numéro du port
* @param ipAddress char *, adresse IP
* @param isBAL int, 1-> Mode Boite aux Lettres
* @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.
@ -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
* une fois la connexion finie [A améliorer].
*
* @param nombreMessages
* @param tailleMessage
* @param sock
* @param socketStruct
* @param isTCP
* @return int
* @param nombreMessage int, le nombre de message à envoyer.
* @param tailleMessage int, la taille de chacun de ces messages.
* @param sock int, socket premettant d'utiliser la primitive readRecvFrom().
* @param socketStruct struct sockaddr_in , la structure du socket.
* @param isTCP int, 1 -> TCP, 0 -> UDP.
* @return int 0 si réussi.
*/
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 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 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

View file

@ -5,7 +5,7 @@
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();
//bal();
char *ipAddress;
@ -71,25 +71,29 @@ int main (int argc, char **argv)
break;
}
}
if (source == -1) {
bool serverMode = (isBAL || source==0);
if (source == -1){
printf("-p|-s non present !\n");
printf("%s",usageChar);
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("%s",usageChar);
exit(EXIT_FAILURE);
}
if(tailleMessage == -1)
{
if(tailleMessage == -1){
tailleMessage = 30;
}
getNonOtpArgs(argv, argc, &port, &ipAddress);
getNonOtpArgs(argv, argc, &port, &ipAddress, serverMode);
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)
{
@ -97,7 +101,7 @@ int main (int argc, char **argv)
}
else
{
launchPuit(nb_message,tailleMessage,tcp,port,ipAddress,isBAL);
launchPuit(nb_message,tailleMessage,tcp,port,isBAL);
}
return(EXIT_SUCCESS);
}

View file

@ -1,6 +1,6 @@
#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;
struct sockaddr_in socketPuit;
@ -11,11 +11,11 @@ int launchPuit(int nombreMessage,int tailleMessage,int isTCP,int port,char * ipA
if(isBAL)
{
printf("Mode Boîte aux Lettres\n");
modeBoiteAuxLettres(socketPuit,SOCK_STREAM,port,ipAddress);
modeBoiteAuxLettres(socketPuit,SOCK_STREAM,port,"localhost");
return 0;
}
/*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);
close(sock);
return 0;

View file

@ -56,12 +56,19 @@ 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)
{
*portNumber = atoi(argv[argc-2]);
*ipAddress = NULL;
*ipAddress = (char *)malloc(sizeof(argv[argc-1]));
strcpy(*ipAddress,argv[argc-1]);
if(portOnly)
{
*portNumber = atoi(argv[argc-1]);
}
else
{
*portNumber = atoi(argv[argc-2]);
*ipAddress = NULL;
*ipAddress = (char *)malloc(sizeof(argv[argc-1]));
strcpy(*ipAddress,argv[argc-1]);
}
}
void formatText(char * actualMessage, int num, int tailleMessage, char messageChar)