diff --git a/mbtk/test/mbtk_tcpip_test.c b/mbtk/test/mbtk_tcpip_test.c
index 5bd39f1..d30d706 100755
--- a/mbtk/test/mbtk_tcpip_test.c
+++ b/mbtk/test/mbtk_tcpip_test.c
@@ -38,10 +38,11 @@
     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");
     printf("link_close <link_id>: Close link.\n");
     printf("send <link_id> <data>:Send data.\n");
-    printf("recv <link_id>:Recv data.\n");
+    printf("recv <link_id> <len>:Recv data.\n");
     printf("traffic_reset <link_id>:Traffic reset.\n");
     printf("traffic_get <link_id>:Traffic get.\n");
     printf("state_get <link_id>:Link state get.\n");
+    printf("tcp_info <link_id>:TCP information state get.\n");
     printf("\n************************************************************************\n");
 }
 
@@ -101,6 +102,14 @@
     }
 }
 
+void tcpip_print_tcp_info(mbtk_tcpip_tcp_state_info_s *info)
+{
+    printf("Link - %d\n", info->link_id);
+    printf("fd - %d\n", info->sock_fd);
+    printf("State - %d\n", info->state);
+    printf("Recv data length - %d\n", info->recv_data_len);
+}
+
 void tcpip_read_cb(int link_id, const char* data, int data_len)
 {
     printf("\nRECV(%d-%d):%s\n", link_id, data_len, data);
@@ -227,12 +236,13 @@
                 } else {
                     printf("ARG error.\n");
                 }
-            } else if(!strncasecmp(cmd, "recv", 4)){ // recv <link_id>
+            } else if(!strncasecmp(cmd, "recv", 4)){ // recv <link_id> <len>
                 int link_id;
-                int count = sscanf(cmd, "recv %d", &link_id);
-                if(count == 1) {
+                int read_size;
+                int count = sscanf(cmd, "recv %d %d", &link_id, &read_size);
+                if(count == 2 && read_size > 0 && read_size <= 2048) {
                     char buff[2048] = {0};
-                    int len = mbtk_tcpip_read(link_id, buff, 2048);
+                    int len = mbtk_tcpip_read(link_id, buff, read_size);
                     if(len > 0) {
                         printf("RECV[%d]:%s\n", len, buff);
                     } else {
@@ -283,6 +293,20 @@
                     printf("ARG error.\n");
                 }
             }
+            else if(!strncasecmp(cmd, "tcp_info", 8)){ // tcp_info <link_id>
+                int link_id;
+                int count = sscanf(cmd, "tcp_info %d", &link_id);
+                if(count == 1) {
+                    mbtk_tcpip_tcp_state_info_s tcp_info;
+                    if(mbtk_tcpip_info_get(link_id, &tcp_info)) {
+                        printf("mbtk_tcpip_info_get() fail.\n");
+                    } else {
+                        tcpip_print_tcp_info(&tcp_info);
+                    }
+                } else {
+                    printf("ARG error.\n");
+                }
+            }
             else if(!strcasecmp(cmd, "h") || !strcasecmp(cmd, "help")) {
                 help();
             } else if(!strcasecmp(cmd, "q")) {
