|
@@ -9,6 +9,7 @@ void tcpserv(void* parameter)
|
|
int sock, connected, bytes_received;
|
|
int sock, connected, bytes_received;
|
|
struct sockaddr_in server_addr, client_addr;
|
|
struct sockaddr_in server_addr, client_addr;
|
|
rt_bool_t stop = RT_FALSE; /* 停止标志 */
|
|
rt_bool_t stop = RT_FALSE; /* 停止标志 */
|
|
|
|
+ int ret;
|
|
|
|
|
|
recv_data = rt_malloc(1024); /* 分配接收用的数据缓冲 */
|
|
recv_data = rt_malloc(1024); /* 分配接收用的数据缓冲 */
|
|
if (recv_data == RT_NULL)
|
|
if (recv_data == RT_NULL)
|
|
@@ -72,16 +73,31 @@ void tcpserv(void* parameter)
|
|
while (1)
|
|
while (1)
|
|
{
|
|
{
|
|
/* 发送数据到connected socket */
|
|
/* 发送数据到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大小的数据 */
|
|
/* 从connected socket中接收数据,接收buffer是1024大小,但并不一定能够收到1024大小的数据 */
|
|
bytes_received = recv(connected,recv_data, 1024, 0);
|
|
bytes_received = recv(connected,recv_data, 1024, 0);
|
|
- if (bytes_received <= 0)
|
|
|
|
|
|
+ if (bytes_received < 0)
|
|
{
|
|
{
|
|
/* 接收失败,关闭这个connected socket */
|
|
/* 接收失败,关闭这个connected socket */
|
|
lwip_close(connected);
|
|
lwip_close(connected);
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
|
|
+ }else if (bytes_received == 0)
|
|
|
|
+ {
|
|
|
|
+ /* 打印recv函数返回值为0的警告信息 */
|
|
|
|
+ rt_kprintf("\nReceived warning,recv function return 0.\r\n");
|
|
|
|
+ }
|
|
|
|
|
|
/* 有接收到数据,把末端清零 */
|
|
/* 有接收到数据,把末端清零 */
|
|
recv_data[bytes_received] = '\0';
|
|
recv_data[bytes_received] = '\0';
|