From 8f52358f0ecf69e84d0f1371c1b51ab511e36b39 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Thu, 12 Jan 2023 14:57:23 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Arrangement=20dans=20un=20unique=20fichier?= =?UTF-8?q?=20main=20avec=20arguments.=20Cr=C3=A9ation=20de=20tsock=20pour?= =?UTF-8?q?=20g=C3=A9rer=20le=20puit/source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.c | 4 ++++ puit.c | 67 +++++++++----------------------------------------------- puit.h | 7 ++++++ source.c | 43 ++++++++---------------------------- source.h | 7 ++++++ tsock.c | 31 ++++++++++++++++++++++++++ tsock.h | 5 +++++ 7 files changed, 73 insertions(+), 91 deletions(-) create mode 100644 puit.h create mode 100644 source.h diff --git a/main.c b/main.c index b5c2637..514f431 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,6 @@ #include "tsock.h" +#include "puit.h" +#include "source.h" int main (int argc, char **argv) { @@ -43,9 +45,11 @@ int main (int argc, char **argv) if(source) { printf("Source : %d\n",nb_message); + launchSource(); } else { printf("Puit : %d\n",nb_message); + launchPuit(); } } \ No newline at end of file diff --git a/puit.c b/puit.c index 12b57cb..13a348c 100644 --- a/puit.c +++ b/puit.c @@ -1,73 +1,26 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "puit.h" -#define _OE_SOCKETS -#define PORT_NUM 9000 - -void initSocketAddr(struct sockaddr_in *socketServerTemp, int source); -void creationSocket(int *socketTemp, struct sockaddr_in *socketTempStruct); - - -char buffer[1024]; -struct sockaddr_in socketClient; - -int main(void) +int launchPuit(void) { int sock; - creationSocket(&sock,&socketClient); - initSocketAddr(&socketClient,0); + char buffer[1024]; + struct sockaddr_in socketPuit; - if (bind(sock, (const struct sockaddr *)&socketClient, sizeof(socketClient)) < 0 ) + creationSocket(&sock,&socketPuit); + initSocketAddr(&socketPuit,0); + + if (bind(sock, (const struct sockaddr *)&socketPuit, sizeof(socketPuit)) < 0 ) { perror("bind failed"); exit(EXIT_FAILURE); } int n; - unsigned int lg_socketServer = sizeof(socketClient); + unsigned int lg_socketPuit = sizeof(socketPuit); - n = recvfrom(sock, (char *)buffer, 1024, 0, (struct sockaddr*) &socketClient,&lg_socketServer); + n = recvfrom(sock, (char *)buffer, 1024, 0, (struct sockaddr*) &socketPuit,&lg_socketPuit); buffer[n] = '\0'; printf("Server : %s\n", buffer); close(sock); return 0; -} - -void initSocketAddr(struct sockaddr_in *socketTempStruct, int source) -{ - socketTempStruct->sin_family=AF_INET; - socketTempStruct->sin_port=htons(PORT_NUM); - if(source) - { - struct hostent *hp; - if((hp = gethostbyname("localhost")) == NULL) - { - printf("erreur gethostbyname\n"); - exit(1); - } - memcpy((char*)&(socketTempStruct->sin_addr.s_addr),hp->h_addr_list[0],hp->h_length); - } - else - { - socketTempStruct->sin_addr.s_addr=INADDR_ANY; - - } -} - -void creationSocket(int *socketTemp, struct sockaddr_in *socketTempStruct){ - -if((*socketTemp=socket(AF_INET,SOCK_DGRAM,0)) == -1) - { - printf("échec création du socket\n"); - exit(1); - } - memset(socketTempStruct, 0, sizeof(*socketTempStruct)); - } \ No newline at end of file diff --git a/puit.h b/puit.h new file mode 100644 index 0000000..6831361 --- /dev/null +++ b/puit.h @@ -0,0 +1,7 @@ +#ifndef HEADER_PUIT +#define HEADER_PUIT + +#include "tsock.h" +int launchPuit(void); + +#endif \ No newline at end of file diff --git a/source.c b/source.c index 84ee9f9..c331d15 100644 --- a/source.c +++ b/source.c @@ -1,45 +1,20 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "source.h" -#define PORT_NUM 9000 - -void initSocket(); - -int sock; -int lg_emis; -struct hostent *hp; -struct sockaddr_in socketClient; - -int main(void) +int launchSource(void) { + int sock; + int lg_emis; + struct hostent *hp; + struct sockaddr_in socketSource; if((sock=socket(AF_INET,SOCK_DGRAM,0)) == -1) { printf("échec création du socket\n"); exit(1); } - memset(&socketClient, 0, sizeof(socketClient)); - initSocket(); - lg_emis=sendto(sock, "aaaaa", 6, 0, (struct sockaddr*)&socketClient, sizeof(socketClient)); + memset(&socketSource, 0, sizeof(socketSource)); + initSocketAddr(&socketSource,1); + lg_emis=sendto(sock, "aaaaa", 6, 0, (struct sockaddr*)&socketSource, sizeof(socketSource)); printf("lgemis = %d\n",lg_emis); close(sock); return 0; -} - -void initSocket() -{ - socketClient.sin_family=AF_INET; - socketClient.sin_port=htons(PORT_NUM); - if((hp = gethostbyname("localhost")) == NULL) - { - printf("erreur gethostbyname\n"); - exit(1); - } - memcpy((char*)&(socketClient.sin_addr.s_addr),hp->h_addr_list[0],hp->h_length); } \ No newline at end of file diff --git a/source.h b/source.h new file mode 100644 index 0000000..fe2dc49 --- /dev/null +++ b/source.h @@ -0,0 +1,7 @@ +#ifndef HEADER_SOURCE +#define HEADER_SOURCE + +#include "tsock.h" +int launchSource(void); + +#endif \ No newline at end of file diff --git a/tsock.c b/tsock.c index 9db2872..1607e05 100644 --- a/tsock.c +++ b/tsock.c @@ -19,4 +19,35 @@ void printInfo(int nb, int source) printf("tsock lance en mode puit, nombre de tampons à recevoir :"); nb != -1 ? printf("%d\n", nb) : printf("infini\n"); } +} + +void initSocketAddr(struct sockaddr_in *socketTempStruct, int source) +{ + socketTempStruct->sin_family=AF_INET; + socketTempStruct->sin_port=htons(PORT_NUM); + if(source) + { + struct hostent *hp; + if((hp = gethostbyname("localhost")) == NULL) + { + printf("erreur gethostbyname\n"); + exit(1); + } + memcpy((char*)&(socketTempStruct->sin_addr.s_addr),hp->h_addr_list[0],hp->h_length); + } + else + { + socketTempStruct->sin_addr.s_addr=INADDR_ANY; + + } +} + +void creationSocket(int *socketTemp, struct sockaddr_in *socketTempStruct) +{ + if((*socketTemp=socket(AF_INET,SOCK_DGRAM,0)) == -1) + { + printf("échec création du socket\n"); + exit(1); + } + memset(socketTempStruct, 0, sizeof(*socketTempStruct)); } \ No newline at end of file diff --git a/tsock.h b/tsock.h index da163c4..d042d0c 100644 --- a/tsock.h +++ b/tsock.h @@ -13,5 +13,10 @@ void setNbMessage(int * nb, int source); void printInfo(int nb, int source); +void initSocketAddr(struct sockaddr_in *socketServerTemp, int source); +void creationSocket(int *socketTemp, struct sockaddr_in *socketTempStruct); + +#define _OE_SOCKETS +#define PORT_NUM 9000 #endif \ No newline at end of file From dbc23a6f036c633a25497d61142aea0decf8ee6b Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Fri, 13 Jan 2023 09:10:54 +0100 Subject: [PATCH 2/2] =?UTF-8?q?cr=C3=A9ation=20de=20multiples=20fonctions?= =?UTF-8?q?=20pour=20g=C3=A9rer=20les=20envois=20et=20les=20receptions.=20?= =?UTF-8?q?Affichage=20plus=20optimis=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ header/puit.h | 8 +++++++ header/source.h | 8 +++++++ tsock.h => header/tsock.h | 4 +--- puit.c | 26 --------------------- puit.h | 7 ------ source | Bin 25608 -> 0 bytes source.c | 20 ---------------- source.h | 7 ------ main.c => src/main.c | 10 ++++---- src/puit.c | 48 ++++++++++++++++++++++++++++++++++++++ src/source.c | 32 +++++++++++++++++++++++++ tsock.c => src/tsock.c | 15 +++--------- 13 files changed, 109 insertions(+), 80 deletions(-) create mode 100644 header/puit.h create mode 100644 header/source.h rename tsock.h => header/tsock.h (67%) delete mode 100644 puit.c delete mode 100644 puit.h delete mode 100755 source delete mode 100644 source.c delete mode 100644 source.h rename main.c => src/main.c (86%) create mode 100644 src/puit.c create mode 100644 src/source.c rename tsock.c => src/tsock.c (74%) diff --git a/README.md b/README.md index 9942b2e..183e04d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # tsock Using C's standard UDP/TCP Library, send and receive data through the Internet. +Pour compiler : +``` +gcc -Wall src/*.c -o main +``` \ No newline at end of file diff --git a/header/puit.h b/header/puit.h new file mode 100644 index 0000000..011aa47 --- /dev/null +++ b/header/puit.h @@ -0,0 +1,8 @@ +#ifndef HEADER_PUIT +#define HEADER_PUIT + +#include "tsock.h" +int launchPuit(int nombreMessage); +int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct); + +#endif \ No newline at end of file diff --git a/header/source.h b/header/source.h new file mode 100644 index 0000000..c499452 --- /dev/null +++ b/header/source.h @@ -0,0 +1,8 @@ +#ifndef HEADER_SOURCE +#define HEADER_SOURCE +#include "tsock.h" + +int launchSource(int nombreMessage); +int sendMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct); + +#endif \ No newline at end of file diff --git a/tsock.h b/header/tsock.h similarity index 67% rename from tsock.h rename to header/tsock.h index d042d0c..de8238d 100644 --- a/tsock.h +++ b/header/tsock.h @@ -13,10 +13,8 @@ void setNbMessage(int * nb, int source); void printInfo(int nb, int source); -void initSocketAddr(struct sockaddr_in *socketServerTemp, int source); -void creationSocket(int *socketTemp, struct sockaddr_in *socketTempStruct); +void initStructSocket(struct sockaddr_in *socketServerTemp, int source); -#define _OE_SOCKETS #define PORT_NUM 9000 #endif \ No newline at end of file diff --git a/puit.c b/puit.c deleted file mode 100644 index 13a348c..0000000 --- a/puit.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "puit.h" - -int launchPuit(void) -{ - int sock; - char buffer[1024]; - struct sockaddr_in socketPuit; - - creationSocket(&sock,&socketPuit); - initSocketAddr(&socketPuit,0); - - if (bind(sock, (const struct sockaddr *)&socketPuit, sizeof(socketPuit)) < 0 ) - { - perror("bind failed"); - exit(EXIT_FAILURE); - } - - int n; - unsigned int lg_socketPuit = sizeof(socketPuit); - - n = recvfrom(sock, (char *)buffer, 1024, 0, (struct sockaddr*) &socketPuit,&lg_socketPuit); - buffer[n] = '\0'; - printf("Server : %s\n", buffer); - close(sock); - return 0; -} \ No newline at end of file diff --git a/puit.h b/puit.h deleted file mode 100644 index 6831361..0000000 --- a/puit.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef HEADER_PUIT -#define HEADER_PUIT - -#include "tsock.h" -int launchPuit(void); - -#endif \ No newline at end of file diff --git a/source b/source deleted file mode 100755 index 3468d3f38d22dd1e95b51217b9037aa25db23675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25608 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 JTna8${1f8kw7viU diff --git a/source.c b/source.c deleted file mode 100644 index c331d15..0000000 --- a/source.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "source.h" - -int launchSource(void) -{ - int sock; - int lg_emis; - struct hostent *hp; - struct sockaddr_in socketSource; - if((sock=socket(AF_INET,SOCK_DGRAM,0)) == -1) - { - printf("échec création du socket\n"); - exit(1); - } - memset(&socketSource, 0, sizeof(socketSource)); - initSocketAddr(&socketSource,1); - lg_emis=sendto(sock, "aaaaa", 6, 0, (struct sockaddr*)&socketSource, sizeof(socketSource)); - printf("lgemis = %d\n",lg_emis); - close(sock); - return 0; -} \ No newline at end of file diff --git a/source.h b/source.h deleted file mode 100644 index fe2dc49..0000000 --- a/source.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef HEADER_SOURCE -#define HEADER_SOURCE - -#include "tsock.h" -int launchSource(void); - -#endif \ No newline at end of file diff --git a/main.c b/src/main.c similarity index 86% rename from main.c rename to src/main.c index 514f431..e999db0 100644 --- a/main.c +++ b/src/main.c @@ -1,6 +1,6 @@ -#include "tsock.h" -#include "puit.h" -#include "source.h" +#include "../header/tsock.h" +#include "../header/puit.h" +#include "../header/source.h" int main (int argc, char **argv) { @@ -45,11 +45,11 @@ int main (int argc, char **argv) if(source) { printf("Source : %d\n",nb_message); - launchSource(); + launchSource(nb_message); } else { printf("Puit : %d\n",nb_message); - launchPuit(); + launchPuit(nb_message); } } \ No newline at end of file diff --git a/src/puit.c b/src/puit.c new file mode 100644 index 0000000..4f9d41c --- /dev/null +++ b/src/puit.c @@ -0,0 +1,48 @@ +#include "../header/puit.h" + +int launchPuit(int nombreMessage) +{ + int sock; + struct sockaddr_in socketPuit; + + if((sock=socket(AF_INET,SOCK_DGRAM,0)) == -1) + { + perror("[tsock] : fonction socket() : echec creation du socket\n"); + exit(EXIT_FAILURE); + } + initStructSocket(&socketPuit,0); + if (bind(sock, (const struct sockaddr *)&socketPuit, sizeof(socketPuit)) < 0 ) + { + perror("[tsock] : fonction bind() : echec du lien avec socket serveur.\n"); + exit(EXIT_FAILURE); + } + receiveMultipleData(nombreMessage,30,sock,socketPuit); + close(sock); + return 0; +} + +int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct) +{ + char messageRecu[tailleMessage+1]; + int n, longueurRecu = sizeof(socketStruct); + if(nombreMessages < 0) + { + int i=1; + while(1) + { + n = recvfrom(sock, (char *)messageRecu, tailleMessage, 0, (struct sockaddr*) &socketStruct,(socklen_t *__restrict__)&longueurRecu); + messageRecu[n] = '\0'; + printf("Puit\tReception n°%d (%d) :\t[%s]\n",i,tailleMessage,messageRecu); + i++; + } + } + else{ + for(int i=0;isin_family=AF_INET; socketTempStruct->sin_port=htons(PORT_NUM); if(source) @@ -40,14 +41,4 @@ void initSocketAddr(struct sockaddr_in *socketTempStruct, int source) socketTempStruct->sin_addr.s_addr=INADDR_ANY; } -} - -void creationSocket(int *socketTemp, struct sockaddr_in *socketTempStruct) -{ - if((*socketTemp=socket(AF_INET,SOCK_DGRAM,0)) == -1) - { - printf("échec création du socket\n"); - exit(1); - } - memset(socketTempStruct, 0, sizeof(*socketTempStruct)); } \ No newline at end of file