请问lwip轮询函数发送数据有20MB字节的的数据需要发送该如何处理?

2019-07-14 14:31发布

请教下,请教下,关于lwip 轮询函数发送数据 ?

tcp_poll(tPCB,tcp_echoclient_poll,1);  //每秒中轮询2次,lwip最大一次只能够发送 1500-40 个字节,
那么我如果一共有20MB字节的数据需要发送,该如何处理啊 ???

/*
轮询函数,
*/
static err_t tcp_echoclient_poll(void *arg, struct tcp_pcb *tpcb)
{
        err_t ret_err;
        struct tcp_client_struct *es;
        es = (struct tcp_client_struct*)arg;

        if(es != NULL)  //连接处于空闲可以发送数据
        {
                if(ReadDataTxStatus())        //判断是否有数据要发送
                {
                        es->p=pbuf_alloc(PBUF_TRANSPORT, strlen((char*)tcp_client_sendbuf),PBUF_POOL);        //申请内存
                        pbuf_take(es->p,(char*)tcp_client_sendbuf,strlen((char*)tcp_client_sendbuf));        //将tcp_client_sentbuf[]中的数据拷贝到es->p_tx中
                        tcp_echoclient_send(tpcb,es);//将tcp_client_sentbuf[]里面复制给pbuf的数据发送出去
                        CLIENT_DATA_SEND_CLEAR_FLAG;        //清除数据发送标志
                        if(es->p)pbuf_free(es->p);        //释放内存
                }
    else if(es->state == ES_TCPCLIENT_CLOSING)
                {
                         tcp_echoclient_connection_close(tpcb,es);//关闭TCP连接
                }
                ret_err=ERR_OK;
        }
  else
        {
                tcp_abort(tpcb);//终止连接,删除pcb控制块
                ret_err=ERR_ABRT;
        }
        return ret_err;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。