From 73c3732ee05fa73eb3eadd0d97822ae3042fbf68 Mon Sep 17 00:00:00 2001 From: Neeserg Parajuli <n.parajuli@student.unimelb.edu.au> Date: Sun, 15 Apr 2018 02:45:03 +0000 Subject: [PATCH] A simple multihtreaded server sending hello world --- server | Bin 9032 -> 13632 bytes server.c | 99 ++++++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 80 insertions(+), 19 deletions(-) diff --git a/server b/server index a588ded5d9cb376ad0abcfd88481af73387f827b..03ad18df946e49d0f54672f91fc0496800deb840 100755 GIT binary patch literal 13632 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 F3;-ieyh;E7 literal 9032 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 Cj-n9& diff --git a/server.c b/server.c index 7a00d33..797d6a2 100644 --- a/server.c +++ b/server.c @@ -7,10 +7,17 @@ #include <netdb.h> #include <netinet/in.h> #include <unistd.h> +# include <pthread.h> + +#define MAXUSER 5 + +void* handleclient(void * newsockfd); int main(int argc, char *argv[]){ struct addrinfo info, *res, *p; - int status; + int sockfd, newsockfd; + struct sockaddr_storage clien_addr; + socklen_t clien_size; char ipstr[INET6_ADDRSTRLEN]; if (argc <2){ @@ -19,40 +26,94 @@ int main(int argc, char *argv[]){ } memset(&info, 0, sizeof(info)); - info.ai_family = AF_UNSPEC; ///sets it to IPv4 + info.ai_family = AF_UNSPEC; ///sets it to unspecified info.ai_socktype = SOCK_STREAM; //TCP connection stream oriented - info.ai_flags = AI_PASSIVE; //use my current IP adress + info.ai_flags = AI_PASSIVE; //listen on on all ip interface of machine + info.ai_protocol = 0; //set this to zero as default - if((status = getaddrinfo(NULL, argv[1], &info, &res) != 0)){ + if((getaddrinfo(NULL, argv[1], &info, &res) != 0)){ fprintf(stderr,"ERROR, no port provided\n");//to check if getaddrinfo gets any addrinfos exit(1); } for (p = res; p!= NULL; p = p->ai_next) { - void *addr; - char *ipver; + if((sockfd = socket(p-> ai_family, p->ai_socktype, p->ai_protocol)) < 0){ + perror("ERROR opening socket"); + continue; + } + + if ((bind(sockfd, p->ai_addr, p->ai_addrlen)) < 0){ + + perror("ERROR on binding"); + continue; + } + + break; + } + + if (p == NULL) + { + perror("ERROR on creating and binding"); + return 2; + } + + if(listen(sockfd,MAXUSER)<0){ + perror("ERROR listening"); + return 2; + } + + + while(1){ + clien_size = sizeof (clien_addr); + if((newsockfd = accept(sockfd, (struct sockaddr *) &clien_addr, &clien_size)) < 0){ + perror("ERROR accepting"); + return 3; + } - if (p->ai_family == AF_INET) { // IPv4 - struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr; - addr = &(ipv4->sin_addr); - ipver = "IPv4"; - } else { // IPv6 - struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)p->ai_addr; - addr = &(ipv6->sin6_addr); - ipver = "IPv6"; - } + pthread_t tid; + + if (pthread_create(&tid, NULL, handleclient, &newsockfd) <0) + { + perror("ERROR creating thread"); + return 3; + } + + pthread_detach(tid); - inet_ntop(p->ai_family, addr, ipstr, sizeof ipstr); - printf(" %s: %s\n", ipver, ipstr); } - freeaddrinfo(res); return 0; -} \ No newline at end of file +} + + +void* handleclient(void * newsockfd){ + int *sockfd_ptr = (int*) newsockfd; + int numbytes; + int sockfd = *sockfd_ptr; + char buffer[256]; + bzero(buffer, 256); + + if ((numbytes = recv(sockfd, buffer, 255, 0)) <0) + { + perror("ERROR recieving"); + return NULL; + } + + printf("%s\n", buffer); + + if (send(sockfd, "hello world", 13, 0) <0) + { + perror("ERROR sending"); + return NULL; + } + + close(sockfd); +} + -- GitLab