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