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