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 76% rename from tsock.h rename to header/tsock.h index da163c4..de8238d 100644 --- a/tsock.h +++ b/header/tsock.h @@ -13,5 +13,8 @@ void setNbMessage(int * nb, int source); void printInfo(int nb, int source); +void initStructSocket(struct sockaddr_in *socketServerTemp, int source); + +#define PORT_NUM 9000 #endif \ No newline at end of file diff --git a/puit.c b/puit.c deleted file mode 100644 index 12b57cb..0000000 --- a/puit.c +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 sock; - creationSocket(&sock,&socketClient); - initSocketAddr(&socketClient,0); - - if (bind(sock, (const struct sockaddr *)&socketClient, sizeof(socketClient)) < 0 ) - { - perror("bind failed"); - exit(EXIT_FAILURE); - } - - int n; - unsigned int lg_socketServer = sizeof(socketClient); - - n = recvfrom(sock, (char *)buffer, 1024, 0, (struct sockaddr*) &socketClient,&lg_socketServer); - 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/source b/source deleted file mode 100755 index 3468d3f..0000000 Binary files a/source and /dev/null differ diff --git a/source.c b/source.c deleted file mode 100644 index 84ee9f9..0000000 --- a/source.c +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define PORT_NUM 9000 - -void initSocket(); - -int sock; -int lg_emis; -struct hostent *hp; -struct sockaddr_in socketClient; - -int main(void) -{ - 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)); - 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/main.c b/src/main.c similarity index 86% rename from main.c rename to src/main.c index b5c2637..e999db0 100644 --- a/main.c +++ b/src/main.c @@ -1,4 +1,6 @@ -#include "tsock.h" +#include "../header/tsock.h" +#include "../header/puit.h" +#include "../header/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(nb_message); } else { printf("Puit : %d\n",nb_message); + 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) + { + 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; + + } +} \ No newline at end of file diff --git a/tsock.c b/tsock.c deleted file mode 100644 index 9db2872..0000000 --- a/tsock.c +++ /dev/null @@ -1,22 +0,0 @@ -#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