diff options
| author | SummerGift <[email protected]> | 2017-08-10 10:46:47 +0800 |
|---|---|---|
| committer | SummerGift <[email protected]> | 2017-08-10 10:47:51 +0800 |
| commit | 07cc5047bb4b92f3a0a95df1e1f95f2cac7b9cd9 (patch) | |
| tree | 07747a0a32805361a4e01a077a0ba3ff10a34d1c /examples/network/tcpserver.c | |
| parent | f9ec093f5147bc4e24e0d2d95f4300e6b646c1f8 (diff) | |
Complete some error handling when send or receive function returns a value is zero.
Diffstat (limited to 'examples/network/tcpserver.c')
| -rw-r--r-- | examples/network/tcpserver.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/examples/network/tcpserver.c b/examples/network/tcpserver.c index 3f34bc2c29..e68d9e53f0 100644 --- a/examples/network/tcpserver.c +++ b/examples/network/tcpserver.c @@ -9,6 +9,7 @@ void tcpserv(void* parameter) int sock, connected, bytes_received; struct sockaddr_in server_addr, client_addr; rt_bool_t stop = RT_FALSE; /* 停止标志 */ + int ret; recv_data = rt_malloc(1024); /* 分配接收用的数据缓冲 */ if (recv_data == RT_NULL) @@ -72,16 +73,31 @@ void tcpserv(void* parameter) while (1) { /* 发送数据到connected socket */ - send(connected, send_data, strlen(send_data), 0); - + ret = send(connected, 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"); + } + /* 从connected socket中接收数据,接收buffer是1024大小,但并不一定能够收到1024大小的数据 */ bytes_received = recv(connected,recv_data, 1024, 0); - if (bytes_received <= 0) + if (bytes_received < 0) { /* 接收失败,关闭这个connected socket */ lwip_close(connected); break; - } + }else if (bytes_received == 0) + { + /* 打印recv函数返回值为0的警告信息 */ + rt_kprintf("\nReceived warning,recv function return 0.\r\n"); + } /* 有接收到数据,把末端清零 */ recv_data[bytes_received] = '\0'; |
