diff --git a/main.c b/main.c new file mode 100644 index 0000000..b5c2637 --- /dev/null +++ b/main.c @@ -0,0 +1,51 @@ +#include "tsock.h" + +int main (int argc, char **argv) +{ + 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 */ + while ((c = getopt(argc, argv, "pn:s")) != -1) { + switch (c) { + case 'p': + if (source != -1) { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1); + } + source = 0; + break; + case 's': + if (source != -1) { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1) ; + } + source = 1; + break; + case 'n': + nb_message = atoi(optarg); + break; + default: + printf("usage: cmd [-p|-s][-n ##]\n"); + break; + } + } + + if (source == -1) { + printf("usage: cmd [-p|-s][-n ##]\n"); + exit(1); + } + + setNbMessage(&nb_message,source); + printInfo(nb_message,source); + + if(source) + { + printf("Source : %d\n",nb_message); + } + else + { + printf("Puit : %d\n",nb_message); + } +} \ No newline at end of file diff --git a/puit.c b/puit.c index 06ea25c..321abd7 100644 --- a/puit.c +++ b/puit.c @@ -24,7 +24,6 @@ int main(void) creationSocket(&sock,&socketClient); initSocketAddr(&socketClient,0); - if (bind(sock, (const struct sockaddr *)&socketClient, sizeof(socketClient)) < 0 ) { perror("bind failed"); @@ -32,9 +31,9 @@ int main(void) } int n; - unsigned int lg_socketClient = sizeof(socketClient); + unsigned int lg_socketServer = sizeof(socketServer); - n = recvfrom(sock, (char *)buffer, 1024, 0, (struct sockaddr*) &socketClient,&lg_socketClient); + n = recvfrom(sock, (char *)buffer, 1024, 0, (struct sockaddr*) &socketServer,&lg_socketServer); buffer[n] = '\0'; printf("Server : %s\n", buffer); close(sock); diff --git a/source b/source new file mode 100755 index 0000000..3468d3f Binary files /dev/null and b/source differ diff --git a/source.c b/source.c index 45e5e4e..84ee9f9 100644 --- a/source.c +++ b/source.c @@ -15,7 +15,7 @@ void initSocket(); int sock; int lg_emis; struct hostent *hp; -struct sockaddr_in socketServer; +struct sockaddr_in socketClient; int main(void) { @@ -24,9 +24,9 @@ int main(void) printf("échec création du socket\n"); exit(1); } - memset(&socketServer, 0, sizeof(socketServer)); + memset(&socketClient, 0, sizeof(socketClient)); initSocket(); - lg_emis=sendto(sock, "aaaaa", 6, 0, (struct sockaddr*)&socketServer, sizeof(socketServer)); + lg_emis=sendto(sock, "aaaaa", 6, 0, (struct sockaddr*)&socketClient, sizeof(socketClient)); printf("lgemis = %d\n",lg_emis); close(sock); return 0; @@ -34,12 +34,12 @@ int main(void) void initSocket() { - socketServer.sin_family=AF_INET; - socketServer.sin_port=htons(PORT_NUM); + socketClient.sin_family=AF_INET; + socketClient.sin_port=htons(PORT_NUM); if((hp = gethostbyname("localhost")) == NULL) { printf("erreur gethostbyname\n"); exit(1); } - memcpy((char*)&(socketServer.sin_addr.s_addr),hp->h_addr_list[0],hp->h_length); + memcpy((char*)&(socketClient.sin_addr.s_addr),hp->h_addr_list[0],hp->h_length); } \ No newline at end of file diff --git a/tsock.c b/tsock.c new file mode 100644 index 0000000..9db2872 --- /dev/null +++ b/tsock.c @@ -0,0 +1,22 @@ +#include "tsock.h" + +void setNbMessage(int * nb, int source) +{ + if((*nb == -1) && (source)) + { + *nb = 10; + } +} + +void printInfo(int nb, int source) +{ + if(source) + { + printf("tsock lance en mode source, nombre de tampons à envoyer : %d\n", nb); + } + else + { + printf("tsock lance en mode puit, nombre de tampons à recevoir :"); + nb != -1 ? printf("%d\n", nb) : printf("infini\n"); + } +} \ No newline at end of file diff --git a/tsock.h b/tsock.h new file mode 100644 index 0000000..da163c4 --- /dev/null +++ b/tsock.h @@ -0,0 +1,17 @@ +#ifndef HEADER_TSOCK +#define HEADER_TSOCK + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void setNbMessage(int * nb, int source); +void printInfo(int nb, int source); + +#endif \ No newline at end of file