From 7afb97993e9436c5cc2f652a247a751592a70802 Mon Sep 17 00:00:00 2001 From: Georg Reisinger Date: Mon, 26 Oct 2020 20:57:54 +0100 Subject: [PATCH] Pthread bugfix, readme, makefile --- .gitignore | 1 + client | Bin 0 -> 21824 bytes makefile | 26 ++++----- readme.txt => readme.md | 12 ++++- server | Bin 0 -> 26824 bytes server.c | 114 ++++++++++++++++++++++------------------ 6 files changed, 87 insertions(+), 66 deletions(-) create mode 100644 .gitignore create mode 100644 client rename readme.txt => readme.md (51%) create mode 100644 server diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d74e21 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode/ diff --git a/client b/client new file mode 100644 index 0000000000000000000000000000000000000000..449ced8d28a72f62ba2c216a708541a46cf2fcca GIT binary patch literal 21824 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 literal 0 HcmV?d00001 diff --git a/makefile b/makefile index d162efd..e91d609 100755 --- a/makefile +++ b/makefile @@ -1,25 +1,25 @@ #Client und Server kompilieren -all: myserver.c myclient.c - gcc myserver.c -o myserver - gcc myclient.c -o myclient +all: server.c client.c + gcc server.c -o server -lpthread + gcc client.c -o client -lpthread #Kompilierten Client und Server löschen -clean: myclient myserver - rm -f myclient myserver +clean: client server + rm -f client server #Nur den Client kompilieren: -client: myclient.c - gcc myclient.c -o myclient +client: client.c + gcc client.c -o client -lpthread #Nur den Server kompilieren: -server: myserver.c - gcc myserver.c -o myserver +server: server.c + gcc server.c -o server -lpthread #Kompilierten Server löschen -cleanS: myserver - rm -f myserver +cleanS: server + rm -f server #Kompilierten Client löschen -cleanC: myclient - rm -f myclient +cleanC: client + rm -f client diff --git a/readme.txt b/readme.md similarity index 51% rename from readme.txt rename to readme.md index 327a2cc..8ad382e 100644 --- a/readme.txt +++ b/readme.md @@ -1,4 +1,14 @@ + +# Protokoll 🔧 + +``` SEND: send;sender;empänger;betreff;nachricht LIST: list:username;postEinAusgang READ: read;username;postEinAusgang;nid -DEL: del;username;postEinAusgang;nid \ No newline at end of file +DEL: del;username;postEinAusgang;nid +``` + +# Erstellt von + +* Lukas Nowy +* Georg Reisinger diff --git a/server b/server new file mode 100644 index 0000000000000000000000000000000000000000..84062b82b47b69264933a5c556b97fe53be87084 GIT binary patch literal 26824 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 jrEJ&Jk9 #include #include +#include #define MAXCHAR 1000 #define BUF 1024 @@ -50,50 +51,16 @@ int countFiles(char path[]) { return file_count; } - -int main (int argc, char **argv) { - int create_socket, new_socket; - socklen_t addrlen; - char buffer[BUF]; - int size; - struct sockaddr_in address, cliaddress; - - if( argc < 3 ){ - printf("Usage: %s S Port Verzeichniss\n", argv[0]); - exit(EXIT_FAILURE); - } - - create_socket = socket (AF_INET, SOCK_STREAM, 0); - - memset(&address,0,sizeof(address)); - address.sin_family = AF_INET; - address.sin_addr.s_addr = INADDR_ANY; - address.sin_port = htons (atoi(argv[1])); - - if (bind ( create_socket, (struct sockaddr *) &address, sizeof (address)) != 0) { - perror("bind error"); - return EXIT_FAILURE; - } - listen (create_socket, 5); - - addrlen = sizeof (struct sockaddr_in); - - //Verzeichniss erstellen - - mkdir(argv[2], 0711); - - while (1) { - printf("Waiting for connections...\n"); - new_socket = accept ( create_socket, (struct sockaddr *) &cliaddress, &addrlen ); - if (new_socket > 0) - { - printf ("Client connected from %s:%d...\n", inet_ntoa (cliaddress.sin_addr),ntohs(cliaddress.sin_port)); - strcpy(buffer,"Welcome to myserver, Please enter your command:\n"); - send(new_socket, buffer, strlen(buffer),0); - } - //ab hier - do { - size = recv (new_socket, buffer, BUF-1, 0); +void *threadFun(void *arg){ + int new_socket = *((int *)arg); + char buffer[BUF]; + pthread_detach(pthread_self()); + if(new_socket > 0){ + strcpy(buffer, "Welcome to myserver, Please enter your command:\n"); + send(new_socket, buffer, strlen(buffer),0); + } + do { + int size = recv (new_socket, buffer, BUF-1, 0); if( size > 0) { @@ -345,12 +312,10 @@ int main (int argc, char **argv) { ptr_file = fopen(filename,"r"); if (!ptr_file) - return 1; + perror("File Open error!"); while (fgets(buf,1000, ptr_file)!=NULL) { - - strcat(res, buf); - + strcat(res, buf); } @@ -448,9 +413,7 @@ int main (int argc, char **argv) { } - } - - else { + }else { printf("error"); char err[] = "ERR"; send(new_socket , err , strlen(err) , 0 ); @@ -471,11 +434,58 @@ int main (int argc, char **argv) { perror("recv error"); char err[] = "ERR"; send(new_socket , err , strlen(err) , 0 ); - return EXIT_FAILURE; } } while (strncmp (buffer, "quit", 4) != 0); close (new_socket); + pthread_exit(NULL); +} + + +int main (int argc, char **argv) { + int create_socket, new_socket; + socklen_t addrlen; + char buffer[BUF]; + int size; + struct sockaddr_in address, cliaddress; + + if( argc < 3 ){ + printf("Usage: %s S Port Verzeichniss\n", argv[0]); + exit(EXIT_FAILURE); + } + + create_socket = socket (AF_INET, SOCK_STREAM, 0); + + memset(&address,0,sizeof(address)); + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons (atoi(argv[1])); + + if (bind ( create_socket, (struct sockaddr *) &address, sizeof (address)) != 0) { + perror("bind error"); + return EXIT_FAILURE; + } + listen (create_socket, 5); + + addrlen = sizeof (struct sockaddr_in); + + //Verzeichniss erstellen + + mkdir(argv[2], 0711); + pthread_t tid; + int i = 0; + while (1) { + printf("Waiting for connections...\n"); + new_socket = accept ( create_socket, (struct sockaddr *) &cliaddress, &addrlen ); + if (new_socket > 0) + { + printf ("Client connected from %s:%d...\n", inet_ntoa (cliaddress.sin_addr),ntohs(cliaddress.sin_port)); + } + if (pthread_create(&tid, NULL, threadFun, &new_socket) != 0) + { + perror("Failed to create thread"); + exit(EXIT_FAILURE); + } } close (create_socket); return EXIT_SUCCESS;