From b90ba316b54db321d3e8aaac7df93b46d80b9d9c Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 22 十二月 2020 15:47:41 +0800 Subject: [PATCH] 三个没有回收的信号 --- test_net_socket/test_net_mod_socket.c | 112 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 84 insertions(+), 28 deletions(-) diff --git a/test_net_socket/test_net_mod_socket.c b/test_net_socket/test_net_mod_socket.c index d8dcd0b..f777773 100644 --- a/test_net_socket/test_net_mod_socket.c +++ b/test_net_socket/test_net_mod_socket.c @@ -1,5 +1,7 @@ #include "net_mod_server_socket_wrapper.h" #include "net_mod_socket_wrapper.h" +#include "bus_server_socket_wrapper.h" + #include "shm_mm_wraper.h" #include "usg_common.h" #include <getopt.h> @@ -31,15 +33,39 @@ void * client; +void *proxy_server_handler(void *sockt) { + pthread_detach(pthread_self()); + + char action[512]; + while ( true) { + printf("Input action: Close?\n"); + if(scanf("%s",action) < 1) { + printf("Invalide action\n"); + continue; + } + + if(strcmp(action, "close") == 0) { + net_mod_server_socket_close(sockt); + break; + } else { + printf("Invalide action\n"); + } + } +} + void start_net_proxy(int port) { + pthread_t tid; printf("Start net proxy\n"); void *serverSocket = net_mod_server_socket_open(port); + + // 鍒涘缓涓�涓嚎绋�,鍙互鍏抽棴server + pthread_create(&tid, NULL, proxy_server_handler, serverSocket); if(net_mod_server_socket_start(serverSocket) != 0) { err_exit(errno, "net_mod_server_socket_start"); } } - +// 鎵撳嵃鎺ュ彈鍒扮殑璁㈤槄娑堟伅 void *print_sub_msg(void *sockt) { pthread_detach(pthread_self()); void *recvbuf; @@ -53,13 +79,39 @@ } -void start_bus_server(int key) { - printf("Start bus server\n"); - void * server_socket = net_mod_socket_open(); +void *bus_handler(void *sockt) { + pthread_detach(pthread_self()); - net_mod_socket_bind(server_socket, key); - - net_mod_socket_start_bus(server_socket); + char action[512]; + while ( true) { + printf("Input action: Close?\n"); + if(scanf("%s",action) < 1) { + printf("Invalide action\n"); + continue; + } + + if(strcmp(action, "close") == 0) { + bus_server_socket_wrapper_close(sockt); + break; + } else { + printf("Invalide action\n"); + } + } + +} + + + +void start_bus_server() { + printf("Start bus server\n"); + void * server_socket = bus_server_socket_wrapper_open(); + pthread_t tid; + // 鍒涘缓涓�涓嚎绋�,鍙互鍏抽棴bus + // pthread_create(&tid, NULL, bus_handler, server_socket); + if(bus_server_socket_wrapper_start_bus(server_socket) != 0) { + printf("start bus failed\n"); + exit(1); + } } @@ -81,7 +133,7 @@ } } - +// 浜や簰寮忓鎴风 void start_net_client(char *sendlist, char*publist ){ client = net_mod_socket_open(); char content[MAXLINE]; @@ -93,6 +145,7 @@ net_mod_recv_msg_t *recv_arr; pthread_t tid; + // 鍒涘缓涓�涓嚎绋嬫帴鍙楄闃呮秷鎭� pthread_create(&tid, NULL, print_sub_msg, client); //192.168.5.10:5000:11, 192.168.5.22:5000:11, 192.168.5.104:5000:11 @@ -139,10 +192,10 @@ } } else if(strcmp(action, "desub") == 0) { - printf("Please input buskey and topic!\n"); + printf("Please input topic!\n"); - scanf("%d %s", &buskey, topic); - if (net_mod_socket_desub(client, topic, strlen(topic), buskey) == 0) { + scanf("%s", topic); + if (net_mod_socket_desub(client, topic, strlen(topic)) == 0) { printf("%d Desub success!\n", net_mod_socket_get_key(client)); } else { printf("Desub failture!\n"); @@ -151,11 +204,10 @@ } else if(strcmp(action, "sub") == 0) { - printf("Please input buskey and topic!\n"); - scanf("%d %s",&buskey, topic); + printf("Please input topic!\n"); + scanf("%s",topic); - printf("===%d %s\n",buskey, topic); - if (net_mod_socket_sub(client, topic, strlen(topic), buskey) == 0) { + if (net_mod_socket_sub(client, topic, strlen(topic)) == 0) { printf("%d Sub success!\n", net_mod_socket_get_key(client)); } else { printf("Sub failture!\n"); @@ -175,11 +227,6 @@ } - - - - - void *_run_sendandrecv_(void *arg) { Targ *targ = (Targ *)arg; @@ -347,6 +394,10 @@ // port = atoi(argv[2]); + if(opt.fun == NULL) { + usage(argv[0]); + exit(1); + } if (strcmp("start_net_proxy", opt.fun) == 0 ) { if(opt.port == 0) { @@ -357,11 +408,8 @@ } else if (strcmp("start_bus_server", opt.fun) == 0) { - if(opt.key == 0) { - usage(argv[0]); - exit(1); - } - start_bus_server(opt.key); + + start_bus_server(); } else if (strcmp("start_reply", opt.fun) == 0) { if(opt.key == 0) { @@ -407,6 +455,9 @@ exit(1); } + + printf("==========end========\n"); + shm_mm_wrapper_destroy(); } @@ -557,10 +608,15 @@ for(i = 0; i < entry_arr_len; i++) { property_arr_len = str_split(entry_arr[i], ":", &property_arr); // printf("%s, %s, %s\n", property_arr[0], property_arr[1], property_arr[2]); - node_arr[i] = {trim(property_arr[0], 0), atoi(property_arr[1]), atoi(property_arr[2])}; - free(entry_arr[i]); + node_arr[i] = {trim(property_arr[0], 0), atoi(property_arr[1]), 0}; + free(property_arr[1]); - free(property_arr[2]); + if(property_arr_len == 3) { + node_arr[i].key = atoi(property_arr[2]); + free(property_arr[2]); + } + free(entry_arr[i]); + } *node_arr_addr = node_arr; -- Gitblit v1.8.0