From 0fd2ff9f9aca1f30d6b4620f90802223cc221fe0 Mon Sep 17 00:00:00 2001 From: GuoWenxue <“guowenxue@gmail.com”> Date: Fri, 22 Apr 2022 09:17:24 +0800 Subject: [PATCH] update socket.c for listen socket --- apue/project_socket/main/client_main.c | 116 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 58 insertions(+), 58 deletions(-) diff --git a/apue/project_socket/main/client_main.c b/apue/project_socket/main/client_main.c index a7887e5..41b04ae 100644 --- a/apue/project_socket/main/client_main.c +++ b/apue/project_socket/main/client_main.c @@ -15,6 +15,7 @@ #include "socket.h" #include "sqlite_blob.h" #include "util_proc.h" +#include "util_time.h" void print_usage(char *progname) @@ -40,6 +41,7 @@ int interval = 30; /* default report termperature every 30 seconds */ int sn = 1; /* default serial number for device ID */ int debug = 0; /* running in debug mode or not */ + int loglevel = LOG_LEVEL_INFO; char *logfile="client.log"; socket_ctx_t sock; @@ -75,6 +77,8 @@ case 'd': debug=1; + logfile="stdout"; + loglevel=LOG_LEVEL_DEBUG; break; case 'I': @@ -96,23 +100,17 @@ { print_usage(argv[0]); return 0; - } + } - if( debug ) - { - /* set logger to standard output with level debug */ - logger_init(NULL, LOG_LEVEL_DEBUG); - log_info("set program running on debug now.\n"); - } - else - { - /* set logger to $logfile with level info */ - if( logger_init(logfile, LOG_LEVEL_INFO) < 0 ) - { - fprintf(stderr, "Initial logger file '%s' failure: %s\n", logfile, strerror(errno)); - return 1; - } + /* set logger to $logfile with level info */ + if( logger_init(logfile, loglevel) < 0 ) + { + fprintf(stderr, "Initial logger file '%s' failure: %s\n", logfile, strerror(errno)); + return 1; + } + if( !debug ) + { log_info("set program running on background now.\n"); daemon(1, 1); /* don't change work path, don't close opened file descriptor */ } @@ -175,51 +173,53 @@ } } - /* socket disconnected */ - if( sock.fd < 0 ) - { - if( sample_flag ) - { - blobdb_push_packet(pack_buf, pack_bytes); - } - } - else /* socket connected */ - { - /* +---------------------------------+ - * | socket send sample packet | - * +---------------------------------+*/ - if( sample_flag ) - { - log_debug("socket send sample packet bytes[%d]: %s\n", pack_bytes, pack_buf); - if( socket_send(&sock, pack_buf, pack_bytes) < 0 ) - { - log_warn("socket send sample packet failure, save it in database now.\n"); - blobdb_push_packet(pack_buf, pack_bytes); - socket_term(&sock); /* close the soket */ - } - } + /* +-------------------------------+ + * | socket disconnect | + * +-------------------------------+*/ + if( sock.fd < 0 ) + { + if( sample_flag ) + { + blobdb_push_packet(pack_buf, pack_bytes); + } - /* +---------------------------------+ - * | socket send packet in database | - * +---------------------------------+*/ - if( !blobdb_pop_packet(pack_buf, sizeof(pack_buf), &pack_bytes) ) - { - log_debug("socket send database packet bytes[%d]: %s\n", pack_bytes, pack_buf); - if( socket_send(&sock, pack_buf, pack_bytes) < 0 ) - { - log_error("socket send database packet failure"); - socket_term(&sock); /* close the soket */ - } - else - { - log_warn("socket send database packet okay, remove it from database now.\n"); - blobdb_del_packet(); - } - } - } + continue; + } - sleep(1); - } + /* +-------------------------------+ + * | socket connected | + * +-------------------------------+*/ + + /* socket send sample packet */ + if( sample_flag ) + { + log_debug("socket send sample packet bytes[%d]: %s\n", pack_bytes, pack_buf); + if( socket_send(&sock, pack_buf, pack_bytes) < 0 ) + { + log_warn("socket send sample packet failure, save it in database now.\n"); + blobdb_push_packet(pack_buf, pack_bytes); + socket_term(&sock); /* close the soket */ + } + } + + /* socket send packet in database */ + if( !blobdb_pop_packet(pack_buf, sizeof(pack_buf), &pack_bytes) ) + { + log_debug("socket send database packet bytes[%d]: %s\n", pack_bytes, pack_buf); + if( socket_send(&sock, pack_buf, pack_bytes) < 0 ) + { + log_error("socket send database packet failure"); + socket_term(&sock); /* close the soket */ + } + else + { + log_warn("socket send database packet okay, remove it from database now.\n"); + blobdb_del_packet(); + } + } + + msleep(100); + } socket_term(&sock); database_term(); -- Gitblit v1.9.1