2016-08-25 135 views
0

我现在正在使用LWIP + STM32,现在试图从浏览器获取http GET/POST。所以基本上,连接好,我做了下面的代码接收数据包:STM32 + LWIP - Pbuf配置

if((err = netconn_recv(conn, &inbuf)) == ERR_OK) { 

     netbuf_first(inbuf); 

     do{ 

      netbuf_data(inbuf, (void**)&buf, &buflen); 
      //recieve_buffer=concat(recieve_buffer,buf); 
      DBGSTR("%d",i); 
      i++; 
      }while(netbuf_next(inbuf) >= 0); 
} 

但不知何故,它没有接收到完整的数据包时,do-while循环始终运行一次,即使接收缓冲器超大。我检查wireshark和内容主体发送。我想这是因为pbuf不足以分配。但是任何人都知道如何做pbuf配置。

回答

0

LWIP堆栈的配置可以在lwip_opt.h头文件中找到。 pbuf缓冲区的大小由宏PBUF_POOL_BUFSIZE定义。将它与有效负载的大小进行比较。

另外请注意,如果数据包太大,数据将被存储在多个pbufs中,则数据包可能会被分段。