From 8d13b7c3d12e05ce4620e43901a554d80d5c7b23 Mon Sep 17 00:00:00 2001
From: Guo Wenxue <guowenxue@gmail.com>
Date: Thu, 15 Nov 2018 13:40:18 +0800
Subject: [PATCH] update multple thread socket server sample code

---
 ch4_thread/socket_server_thread.c |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/ch4_thread/socket_server_thread.c b/ch4_thread/socket_server_thread.c
index 7b194af..5446eb0 100644
--- a/ch4_thread/socket_server_thread.c
+++ b/ch4_thread/socket_server_thread.c
@@ -9,13 +9,11 @@
 #include <getopt.h>
 #include <pthread.h>
 
-#define MSG_STR "Hello LingYun IoT Studio Client\n"
 
 typedef void *(THREAD_BODY) (void *thread_arg);
 
 void *thread_worker(void *ctx);
 int thread_start(pthread_t * thread_id, THREAD_BODY * thread_workbody, void *thread_arg);
-
 
 void print_usage(char *progname)
 {
@@ -106,7 +104,8 @@
 
 		printf("Accept new client[%s:%d] successfully\n", inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port));
 
-		thread_start(&tid, thread_worker, &clifd);
+		/* ???? Can not pass &clifd to child process, U can think about the reason  ???? */
+		thread_start(&tid, thread_worker, (void *)clifd);
 	}
 
 
@@ -166,7 +165,7 @@
 		pthread_exit(NULL);
 	}
 
-	clifd = *(int *)ctx;
+	clifd = (int)ctx;
 	
 	printf("Child thread start to commuicate with socket client...\n");
 	
@@ -176,13 +175,13 @@
 	       	rv=read(clifd, buf, sizeof(buf));
 	       	if( rv < 0)
 	       	{
-		       	printf("Read data from client sockfd[%d] failure: %s\n", clifd, strerror(errno));
+		       	printf("Read data from client sockfd[%d] failure: %s and thread will exit\n", clifd, strerror(errno));
 		       	close(clifd);
 		       	pthread_exit(NULL);
 	       	}
 		else if( rv == 0)
 	       	{ 
-			printf("Socket[%d] get disconnected\n", clifd);
+			printf("Socket[%d] get disconnected and thread will exit.\n", clifd);
 		       	close(clifd);
 		       	pthread_exit(NULL);
 	       	} 
@@ -194,7 +193,7 @@
 		rv=write(clifd, buf, rv);
 	       	if(rv < 0)
 	       	{
-		       	printf("Write to client by sockfd[%d] failure: %s\n", clifd, strerror(errno));
+		       	printf("Write to client by sockfd[%d] failure: %s and thread will exit\n", clifd, strerror(errno));
 		       	close(clifd);
 		       	pthread_exit(NULL);
 	       	}

--
Gitblit v1.9.1