关于RAK439的发送和接收



  • if(app_demo_ctx.ltcps_clientinfos[i].loopback_count > 0) 
    {
        send_templen = app_demo_ctx.ltcps_clientinfos[i].loopback_count >MAX_SEND_PACKET_LEN ? MAX_SEND_PACKET_LEN:app_demo_ctx.ltcps_clientinfos[i].loopback_count;  
    
        ret = send(app_demo_ctx.ltcps_clientinfos[i].tcpc_sockfd, temp_buf, send_templen, 0);
    ...
    ...
    ...
    }
    

    如果loopback_count > 0 那么计算这个值有没有超过一次发送最大包字节的值MAX_SEND_PACKET_LEN,如果超过,则发送一包的大小,如果小于,则直接发送长度为loopback_count;
    问题来了,如果我要发的字符长度超过MAX_SEND_PACKET_LEN,那么它也会自动帮我全发送完吗,看这几句代码的意思好像内部有缓冲区,可以自动存储为发送数据,留着下次继续发送,是这样的吗???
    你们的发送接收过程是怎样的,想知道,希望能详细说一下,谢谢。


  • administrators

    发送超过MAX_SEND_PACKET_LEN,请手动分两包进行发送。



  • @rakadmin 你好,我一次需要发送50包数据,那么连续直接调用50次send函数吗?

    我这样做了,但问题很大,要么每次最后一包发送失败,要么全程失败,只有偶尔那么几次会成功,请教下这个问题怎么解决?


  • administrators

    那就要看你发送返回的是什么错误了?



  • @rakadmin 调用send发送返回是-19


  • administrators

    那就在发送每包后加延时就可以解决。



  • @rakadmin 可以了,谢谢


登录后回复
 

与 RAK支持中心 的连接断开,我们正在尝试重连,请耐心等待