2016-08-25 134 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中,則數據包可能會被分段。