diff options
| author | Bernard Xiong <[email protected]> | 2017-08-10 12:31:27 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-08-10 12:31:27 +0800 |
| commit | f6b6a5cf221845fea7b7614097a31b30caeefee2 (patch) | |
| tree | 313b58258071119908e2334f6e8cc6edb39b9c79 /examples/network/tcpclient.c | |
| parent | 71d1f7faa9fb6b820720b4cbfa21db26d2857052 (diff) | |
| parent | 0d33799d0dcf2f2232f83f0bf92694ba54888b65 (diff) | |
Merge pull request #796 from SummerGGift/master
[examples] add some python example for tcp and complete some error handling.
Diffstat (limited to 'examples/network/tcpclient.c')
| -rw-r--r-- | examples/network/tcpclient.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/examples/network/tcpclient.c b/examples/network/tcpclient.c index 7a0d4b5365..529c612b9a 100644 --- a/examples/network/tcpclient.c +++ b/examples/network/tcpclient.c @@ -10,6 +10,7 @@ void tcpclient(const char* url, int port) char *recv_data; struct hostent *host; int sock, bytes_received; + int ret; struct sockaddr_in server_addr; /* 通过函数入口参数url获得host地址(如果是域名,会做域名解析) */ @@ -56,15 +57,19 @@ 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"); + } /* 有接收到数据,把末端清零 */ recv_data[bytes_received] = '\0'; @@ -73,7 +78,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); break; @@ -85,7 +90,18 @@ 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"); + break; + }else if (ret == 0) + { + /* 打印send函数返回值为0的警告信息 */ + rt_kprintf("\n Send warning,send function return 0.\r\n"); + } } return; |
