diff options
| author | bernard <[email protected]> | 2017-09-29 10:23:56 +0800 |
|---|---|---|
| committer | bernard <[email protected]> | 2017-09-29 10:23:56 +0800 |
| commit | cccff34fcac04f34233a33e453f2d0ec255bf231 (patch) | |
| tree | d406036f73296b27f3cb96e77ede98dd7803c61d /examples/network/tcpclient.c | |
| parent | e9a77b513f0a4b37d539a030592a61b08d03602d (diff) | |
| parent | 3691b67e83ab57196dfc62606b1be18db76994a7 (diff) | |
Merge branch 'master' of https://github.com/RT-Thread/rt-thread
Diffstat (limited to 'examples/network/tcpclient.c')
| -rw-r--r-- | examples/network/tcpclient.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/examples/network/tcpclient.c b/examples/network/tcpclient.c index 7a0d4b5365..c7a53c609f 100644 --- a/examples/network/tcpclient.c +++ b/examples/network/tcpclient.c @@ -1,12 +1,14 @@ #include <rtthread.h> -#include <lwip/netdb.h> /* 为了解析主机名,需要包含netdb.h头文件 */ + +#include <lwip/netdb.h> /* 为了解析主机名,需要包含netdb.h头文件 */ #include <lwip/sockets.h> /* 使用BSD socket,需要包含sockets.h头文件 */ -#define BUFSZ 1024 +#define BUFSZ 1024 static const char send_data[] = "This is TCP Client from RT-Thread."; /* 发送用到的数据 */ void tcpclient(const char* url, int port) { + int ret; char *recv_data; struct hostent *host; int sock, bytes_received; @@ -56,15 +58,22 @@ void tcpclient(const char* url, int port) { /* 从sock连接中接收最大BUFSZ - 1字节数据 */ bytes_received = recv(sock, recv_data, BUFSZ - 1, 0); - if (bytes_received <= 0) + if (bytes_received < 0) { /* 接收失败,关闭这个连接 */ lwip_close(sock); + rt_kprintf("\nreceived error,close the socket.\r\n"); /* 释放接收缓冲 */ rt_free(recv_data); break; } + else if (bytes_received == 0) + { + /* 打印recv函数返回值为0的警告信息 */ + rt_kprintf("\nReceived warning,recv function return 0.\r\n"); + continue; + } /* 有接收到数据,把末端清零 */ recv_data[bytes_received] = '\0'; @@ -73,6 +82,7 @@ void tcpclient(const char* url, int port) { /* 如果是首字母是q或Q,关闭这个连接 */ lwip_close(sock); + rt_kprintf("\n got a 'q' or 'Q',close the socket.\r\n"); /* 释放接收缓冲 */ rt_free(recv_data); @@ -85,7 +95,21 @@ void tcpclient(const char* url, int port) } /* 发送数据到sock连接 */ - send(sock,send_data,strlen(send_data), 0); + ret = send(sock,send_data,strlen(send_data), 0); + if (ret < 0) + { + /* 接收失败,关闭这个连接 */ + lwip_close(sock); + rt_kprintf("\nsend error,close the socket.\r\n"); + + rt_free(recv_data); + break; + } + else if (ret == 0) + { + /* 打印send函数返回值为0的警告信息 */ + rt_kprintf("\n Send warning,send function return 0.\r\n"); + } } return; |
