关于rt-thread在esp8266等待数据接收时,定时发送数据的解决方案

关于在esp8266等待数据接收时,定时发送数据的解决方案
解决方案:通过对recv发送函数的接收超时时间进行修改,和返回的错误代码进行修改。
第一步,修改recv发送函数的超时时间  
struct timeval timeout;
timeout.tv_sec=60;  //这里单位是s
setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(void *)&timeout,sizeof(timeout));  
setscokopt函数见rtthread的sal文档————》sal配置
第二步,修改recv函数的错误返回代码
通过修改at_socket.c中的 if (rt_sem_take(sock->recv_notice, timeout) < 0)这个if语句里面的return的返回值,修改等待超时的错误返回码,在这里修改成返回值为-2.
最新版的recv函数功能
int recv(int s,char *aa,int sum,int flags);
返回值 
    0 数据接收完毕,服务器关闭
    0> 数据接收完成,返回数据接收数量
    0< 数据接受失败
    ==-2 数据接收等待时间超时。
s 套接字
aa 返回接收的数据
sum 接收数组的最大值
flags 一般为0

你可能感兴趣的:(RT-THRAED)