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