b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 1 | #include <stdio.h> |
| 2 | #include <stdlib.h> |
| 3 | #include <unistd.h> |
| 4 | #include <errno.h> |
| 5 | #include <sys/socket.h> |
| 6 | #include <sys/un.h> |
| 7 | #include <netinet/in.h> |
| 8 | #include <pthread.h> |
| 9 | #include <sys/epoll.h> |
| 10 | #include <string.h> |
| 11 | #include <fcntl.h> |
| 12 | #include <signal.h> |
| 13 | |
| 14 | #include "mbtk_tcpip.h" |
| 15 | #include "mbtk_log.h" |
| 16 | |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 17 | #if 0 |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 18 | |
| 19 | static void help() |
| 20 | { |
| 21 | printf("\n************************************************************************\n"); |
| 22 | printf("net_open: Open network.\n"); |
| 23 | printf("net_close: Close network.\n"); |
| 24 | printf("link_open <link_id> <ser_addr> <ser_port> <loc_port> <TCP/UDP> <CLI/SER> <ack> <ssl> <ignore_cert> <heartbeat_time> <delay_time> <read_cb>: Open link.\n"); |
| 25 | printf("link_close <link_id>: Close link.\n"); |
| 26 | printf("send <link_id> <data>:Send data.\n"); |
| 27 | printf("recv <link_id> <len>:Recv data.\n"); |
| 28 | printf("traffic_reset <link_id>:Traffic reset.\n"); |
| 29 | printf("traffic_get <link_id>:Traffic get.\n"); |
| 30 | printf("state_get <link_id>:Link state get.\n"); |
| 31 | printf("tcp_info <link_id>:TCP information state get.\n"); |
| 32 | printf("\n************************************************************************\n"); |
| 33 | } |
| 34 | |
| 35 | static void sig_process(int sig) |
| 36 | { |
| 37 | LOGI("I got signal %d\n", sig); |
| 38 | switch(sig) |
| 39 | { |
| 40 | case SIGINT: // Ctrl + C |
| 41 | { |
| 42 | LOGI("Exit by SIGINT.\n"); |
| 43 | mbtk_tcpip_err_enum err = mbtk_tcpip_net_close(); |
| 44 | if(err == MBTK_TCPIP_ERR_SUCCESS) { |
| 45 | printf("Net close success.\n"); |
| 46 | } else { |
| 47 | printf("Net close fail:%d\n", err); |
| 48 | } |
| 49 | exit(0); |
| 50 | } |
| 51 | case SIGQUIT: // Ctrl + \ (类似 SIGINT ,但要产生core文件) |
| 52 | { |
| 53 | LOGI("Exit by SIGQUIT.\n"); |
| 54 | mbtk_tcpip_err_enum err = mbtk_tcpip_net_close(); |
| 55 | if(err == MBTK_TCPIP_ERR_SUCCESS) { |
| 56 | printf("Net close success.\n"); |
| 57 | } else { |
| 58 | printf("Net close fail:%d\n", err); |
| 59 | } |
| 60 | exit(0); |
| 61 | } |
| 62 | case SIGTERM:// 默认kill (同 SIGKILL ,但 SIGKILL 不可捕获) |
| 63 | { |
| 64 | LOGI("Exit by SIGTERM.\n"); |
| 65 | mbtk_tcpip_err_enum err = mbtk_tcpip_net_close(); |
| 66 | if(err == MBTK_TCPIP_ERR_SUCCESS) { |
| 67 | printf("Net close success.\n"); |
| 68 | } else { |
| 69 | printf("Net close fail:%d\n", err); |
| 70 | } |
| 71 | exit(0); |
| 72 | } |
| 73 | case SIGTSTP:// Ctrl + Z (同 SIGSTOP ,但 SIGSTOP 不可捕获) |
| 74 | { |
| 75 | LOGI("Exit by SIGTSTP.\n"); |
| 76 | exit(0); |
| 77 | } |
| 78 | case SIGSEGV: // 如空指针 |
| 79 | { |
| 80 | LOGI("Exit by SIGSEGV.\n"); |
| 81 | exit(0); |
| 82 | } |
| 83 | default: |
| 84 | { |
| 85 | LOGI("Unknown sig:%d\n",sig); |
| 86 | break; |
| 87 | } |
| 88 | } |
| 89 | } |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 90 | #endif |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 91 | void tcpip_print_tcp_info(mbtk_tcpip_tcp_state_info_s *info) |
| 92 | { |
| 93 | printf("Link - %d\n", info->link_id); |
| 94 | printf("fd - %d\n", info->sock_fd); |
| 95 | printf("State - %d\n", info->state); |
| 96 | printf("Recv data length - %d\n", info->recv_data_len); |
| 97 | } |
| 98 | |
| 99 | void tcpip_read_cb(int link_id, const char* data, int data_len) |
| 100 | { |
| 101 | printf("\nRECV(%d-%d):%s\n", link_id, data_len, data); |
| 102 | } |
| 103 | |
| 104 | void tcpip_net_callback_func(int state, const char* addr) |
| 105 | { |
| 106 | if(state) { |
| 107 | printf("Net conncect, IP : %s\n", addr); |
| 108 | } else { |
| 109 | printf("Net disconnect.\n"); |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | |
| 114 | int main(int argc, char *argv[]) |
| 115 | { |
| 116 | |
| 117 | |
| 118 | printf(">>>>>>>>>>>START TCP TEST>>>>>>>>>>>>>\r\n"); |
| 119 | mbtk_tcpip_err_enum err; |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 120 | |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 121 | mbtk_tcpip_info_t info; |
| 122 | memset(&info, 0x0, sizeof(mbtk_tcpip_info_t)); |
| 123 | char *ip = "www.chaixiongfeng.group"; |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 124 | strcpy(info.ser_addr,ip); |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 125 | info.link_id=1; |
| 126 | info.ser_port =45002; |
| 127 | info.prot_type = MBTK_SOCK_TCP; |
| 128 | info.tcpip_type = MBTK_TCPIP_TYPE_CLIENT; |
| 129 | info.read_cb = NULL; |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 130 | |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 131 | |
| 132 | err = mbtk_tcpip_sock_open((const mbtk_tcpip_info_t*)(&info)); |
| 133 | if(err == MBTK_TCPIP_ERR_SUCCESS) { |
| 134 | printf("Link open success.\n"); |
| 135 | } else { |
| 136 | printf("Link open fail:%d\n", err); |
| 137 | return 0; |
| 138 | } |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 139 | |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 140 | while(1) |
| 141 | { |
| 142 | char *data="stargcharge connect\r\n"; |
| 143 | int len = mbtk_tcpip_send(1, data, strlen(data), NULL, 0); |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 144 | if(len == strlen(data)) |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 145 | { |
| 146 | printf("Send success:%d.\n", len); |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 147 | } |
| 148 | else |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 149 | { |
| 150 | printf("Send fail:%d/%d\n", len, strlen(data)); |
| 151 | } |
| 152 | |
| 153 | char buff[128]; |
| 154 | len = mbtk_tcpip_read(1, buff, 128); |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 155 | if(len > 0) |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 156 | { |
| 157 | printf("RECV[%d]:%s\n", len, buff); |
| 158 | } |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 159 | else |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 160 | { |
| 161 | printf("RECV fail:%d\n", len); |
| 162 | } |
| 163 | |
| 164 | err = mbtk_tcpip_sock_close(1); |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 165 | if(err == MBTK_TCPIP_ERR_SUCCESS) |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 166 | { |
| 167 | printf("Link close success.\n"); |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 168 | } |
| 169 | else |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 170 | { |
| 171 | printf("Link close fail:%d\n", err); |
| 172 | } |
| 173 | sleep(5); |
b.liu | 9e8584b | 2024-11-06 19:21:28 +0800 | [diff] [blame] | 174 | } |
b.liu | 4e243dc | 2023-11-27 11:20:00 +0800 | [diff] [blame] | 175 | } |
| 176 | |
| 177 | |