From 08f8ef8d183c307771a5223aa68de729be61b81d Mon Sep 17 00:00:00 2001 From: skhinach Date: Tue, 2 Apr 2019 17:55:24 +0200 Subject: [PATCH] modifs --- Network/Makefile | 8 ++------ Network/sender.c | 34 ++++------------------------------ Network/tcpserver.c | 3 ++- Threads/Makefile | 2 +- Threads/threadSocket.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------ bin/Makefile | 2 +- bin/test | Bin 18440 -> 0 bytes bin/test.c | 22 ---------------------- 8 files changed, 81 insertions(+), 91 deletions(-) diff --git a/Network/Makefile b/Network/Makefile index 71fe5eb..f4efab8 100755 --- a/Network/Makefile +++ b/Network/Makefile @@ -3,7 +3,7 @@ # CC=gcc -CFLAGS=-W -Wall -Wextra +CFLAGS=-W -Wall -Wextra -g CLIBS=ar -rcs LIB=libnet.a LDIR=../libs/ @@ -18,13 +18,9 @@ all: $(LIB) $(LIB): sender.o sniffer.o tcpserver.o rm -f $@ $(CLIBS) $(LDIR)$@ $^ -<<<<<<< HEAD ranlib $(LDIR)$@ rm -f *.o -======= - ranlib $(LDIR)$@ ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d - + tcpserver.o: tcpserver.c $(CC) -o $@ -c $^ -I$(IDIR) $(CFLAGS) diff --git a/Network/sender.c b/Network/sender.c index b9f0272..33febee 100755 --- a/Network/sender.c +++ b/Network/sender.c @@ -9,18 +9,11 @@ #include -<<<<<<< HEAD int initializeSocketUDP(char* service) { int sock_id; struct addrinfo precisions, *resultat=NULL, *origine; // On stocke dans précisions nos besoins pour le socket, dans resultat l'adresse qui respectera les requêtes -======= -int initializeSocketUDP(char* service) -{ - int sock_id; - struct addrinfo precisions, *resultat=NULL, *origine; // On stocke dans précisions nos besoins pour le socket, dans resultat l'adresse qui respectera les reqêtes ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d memset(&precisions, 0, sizeof precisions); precisions.ai_family = AF_UNSPEC; @@ -67,7 +60,7 @@ int sendUDPBroadcast(char* message, int port) { static struct sockaddr_in addrUDP; addrUDP.sin_family=AF_INET; - addrUDP.sin_port=(uint16_t)port; + addrUDP.sin_port=htons(port); struct in_addr tmpadd={0xffffffff}; addrUDP.sin_addr=tmpadd; @@ -77,16 +70,10 @@ int sendUDPBroadcast(char* message, int port) int sock_id=initializeSocketUDP( tmp_str ); printf("Initialize via Broadcast %d\n", sock_id); -<<<<<<< HEAD - int status; - if((status=sendto(sock_id, message, sizeof(message), 0, (struct sockaddr*) &addrUDP, sizeof(addrUDP))) < 0) { fprintf(stderr, "Erreur sendto %d\n", status); return(-1);} + if(sendto(sock_id, message, sizeof(message), 0, (struct sockaddr*) &addrUDP, sizeof(addrUDP)) < 0) { fprintf(stderr, "Erreur sendto\n"); return(-1);} -======= - if(sendto(sock_id, message, sizeof(message), 0, (struct sockaddr*) &addrUDP, sizeof(addrUDP)) < 0) { fprintf(stderr, "Erreur sendto\n"); return(-1);} - ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d close(sock_id); return 0; } @@ -97,7 +84,7 @@ int sendUDPUnicast(char* address, char* message, int port) { static struct sockaddr_in addrUDP; addrUDP.sin_family=AF_INET; - addrUDP.sin_port=(uint16_t)port; + addrUDP.sin_port=htons(port); inet_aton(address, &(addrUDP.sin_addr)); // Converti l'écriture string de format a.b.c.d en format Internet @@ -105,27 +92,14 @@ int sendUDPUnicast(char* address, char* message, int port) sprintf(tmp_str, "%d", port); int sock_id=initializeSocketUDP( tmp_str ); printf("Initialize via Unicast %d\n", sock_id); -<<<<<<< HEAD if(sendto(sock_id, message, sizeof(message), 0, (struct sockaddr*) &addrUDP, sizeof(addrUDP)) < 0 ) { fprintf(stderr, "Error sendto %d\n", errno); return(-1); } -======= - - if(sendto(sock_id, message, sizeof(message), 0, (struct sockaddr*) &addrUDP, sizeof(addrUDP)) < 0 ) { fprintf(stderr, "Error sendto\n"); return(-1); } - - close(sock_id); - return 0; -} ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d - close(sock_id); + return 0; } -<<<<<<< HEAD - -======= ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d /* int main(void) diff --git a/Network/tcpserver.c b/Network/tcpserver.c index b738f39..fd12d9b 100644 --- a/Network/tcpserver.c +++ b/Network/tcpserver.c @@ -44,8 +44,9 @@ int initialisationServeur(char* service) int val=1; - if(setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR|SO_BROADCAST, &val, sizeof(val))<0) { fprintf(stderr, "Erreur setsockopt\n"); return(-1); } + if(setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val))<0) { fprintf(stderr, "Erreur setsockopt\n"); return(-1); } + if(setsockopt(sock_fd, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val))<0) { fprintf(stderr, "Erreur setsockopt\n"); return(-1); } if(bind(sock_fd, resultat->ai_addr, resultat->ai_addrlen)) { fprintf(stderr, "Erreur bind\n"); return(-1); } diff --git a/Threads/Makefile b/Threads/Makefile index 1e79795..209572d 100755 --- a/Threads/Makefile +++ b/Threads/Makefile @@ -3,7 +3,7 @@ # CC=gcc -CFLAGS=-W -Wall -Wextra +CFLAGS=-W -Wall -Wextra -g CLIBS=ar -rcs LIB=libthrd.a LDIR=../libs/ diff --git a/Threads/threadSocket.c b/Threads/threadSocket.c index f7eb221..24e3463 100644 --- a/Threads/threadSocket.c +++ b/Threads/threadSocket.c @@ -6,50 +6,89 @@ #define BUFF_SIZE 1000 -void* reponseConnexion(void* sock) + + + +struct PageWeb { - - printf("Connected\n"); -<<<<<<< HEAD - char buff_rec[BUFF_SIZE]; - char buffer[]="HTTP/1.1 200 OK\r\nServer: Serveur fait maison\r\nContent-Type: text/html; charset=UTF-8\r\nConnection: Keep-alive\r\n\r\nPOST /Page.html HTTP/1.1\r\n\r\n"; + int size; + char* html_contents; +}; - FILE* sockdial_stream = fdopen(*((int*)(sock)), "a+"); - - printf("Sock : %d // Stream : %p \n", *((int*)(sock)), sockdial_stream); - - fgets(buff_rec, BUFF_SIZE, sockdial_stream); - fprintf(sockdial_stream, "%s", buffer); - //while(strcmp(buffer, "EXIT\n")!=0) - //{ - printf("WAIT\n"); - // fgets(buff_rec, BUFF_SIZE, sockdial_stream); + +void freePage(struct PageWeb** page) +{ + if(*page!=NULL) + { + if((*page)->html_contents!=NULL) free((*page)->html_contents); + free(*page); + } +} + + + +void getWeb(char* pageName, struct PageWeb** page) +{ + *page=malloc(sizeof(struct PageWeb)); + + FILE* pageFile=fopen(pageName, "r+"); + + if(pageFile!=NULL) + { + fseek(pageFile, 0L, SEEK_END); + long nbr_char=ftell(pageFile); + fseek(pageFile, 0L, SEEK_SET); + + + (*page)->html_contents=malloc(nbr_char*sizeof(char)); + fread(((*page)->html_contents),1,nbr_char,pageFile); + + (*page)->size=strlen(((*page)->html_contents)); + fclose(pageFile); + } + else + { + char erreur[]="

404 PAGE NOT FOUND

\r\n\r\n La page que vous cherchez n'a pas été trouvée, sans doute parce que vous êtes nul."; + (*page)->html_contents=malloc(strlen(erreur)*sizeof(char)); + strcpy((*page)->html_contents, erreur); + } - printf("Le message reçu : %s", buff_rec); +} + + - fprintf(sockdial_stream, "Ceci est une réponse du serveur TCP.\n"); - //} -======= +void* reponseConnexion(void* sock) +{ + printf("Connected\n"); // Affiche le fait que qqn soit connecté + + struct PageWeb* page; + + getWeb("../Sioux/Page.html", &page); + + char buff_rec[BUFF_SIZE]; char buffer[BUFF_SIZE]; - + + strcat(buffer,"HTTP/1.1 200 OK\r\nServer: Serveur fait maison\r\nContent-Type: text/html; charset=UTF-8\r\nConnection: Keep-alive\r\n\r\n"); + strcat(buffer, page->html_contents); + + freePage(&page); + FILE* sockdial_stream = fdopen(*((int*)(sock)), "a+"); printf("Sock : %d // Stream : %p \n", *((int*)(sock)), sockdial_stream); - - while(strcmp(buffer, "EXIT\n")!=0) - { - printf("WAIT\n"); - fgets(buffer, BUFF_SIZE, sockdial_stream); - printf("Le message reçu : %s", buffer); + fprintf(sockdial_stream, "%s", buffer); + + printf("WAIT\n"); - fprintf(sockdial_stream, "Ceci est une réponse du serveur TCP.\n"); + fgets(buff_rec, BUFF_SIZE, sockdial_stream); + + printf("Le message reçu : %s", buff_rec); - } ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d + fprintf(sockdial_stream, "Ceci est une réponse du serveur TCP.\n"); strcpy(buffer, "START"); printf("Fin de la connexion\n"); @@ -58,6 +97,8 @@ void* reponseConnexion(void* sock) } + + int lanceThread(void(* fonction) (void *), void* arg, int size) { pthread_t thr_id; diff --git a/bin/Makefile b/bin/Makefile index 7b75daa..846fcb7 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -1,6 +1,6 @@ CC=gcc -CFLAGS=-W -Wall -Wextra +CFLAGS=-W -Wall -Wextra -g CLIBS=ar -rcs LIB=libnet.a LDIR=../libs/ diff --git a/bin/test b/bin/test index aeebf71..49ac1e6 100755 Binary files a/bin/test and b/bin/test differ diff --git a/bin/test.c b/bin/test.c index f893f34..d2447b4 100644 --- a/bin/test.c +++ b/bin/test.c @@ -1,6 +1,5 @@ #include #include -<<<<<<< HEAD #include #include #include @@ -23,13 +22,6 @@ void handler(int sig) } -======= -#include -#include -#include "libnet.h" - - ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d void argPortParsing(int argc, char* argv[], char* port) { struct option port_arg={"port", 1, NULL, 'p'}; @@ -55,7 +47,6 @@ int main(int argc, char* argv[]) char port[10]="80"; argPortParsing(argc, argv, port); -<<<<<<< HEAD action.sa_handler=&handler; sigaction(SIGINT, &action, NULL); @@ -66,19 +57,6 @@ int main(int argc, char* argv[]) sendUDPBroadcast("BroadWesh", 2020); sendUDPUnicast("192.168.0.37", "Coucou", 2020); -======= - - int sock_fd=initialisationServeur(port); - - if( sock_fd==-1 ) { fprintf(stderr, "Initialisation du serveur impossible\n"); return -1; } - - - boucleServeur(sock_fd, (void*)&reponseConnexion); - - - sendUDPBroadcast("BroadWesh", 2020); - ->>>>>>> 52d8a1eaf954b611aaf0861144b440a15f7c517d return 0; } -- libgit2 0.21.2