STM32 + LWIP - Конфигурация Pbuf

Сейчас я работаю с LWIP + STM32 и теперь пытаюсь получить http GET / POST из браузера. В общем, соединение хорошее, и я получил пакет с приведенным ниже кодом:

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 всегда выполняется один раз, даже если буфер приема очень большой. Я проверяю wirehark и отправляю тело содержимого. Я предполагаю, что это из-за того, что pbuf недостаточно для выделения. Но кто-нибудь знает, что делать с конфигурацией pbuf.


person Pwan    schedule 25.08.2016    source источник


Ответы (1)


Конфигурацию стека LWIP можно найти в заголовочном файле lwip_opt.h. Размер буфера pbuf определяется макросом PBUF_POOL_BUFSIZE. Сравните это с размером вашей полезной нагрузки.

Также имейте в виду, что пакет может быть фрагментирован, если он слишком большой, поэтому данные будут храниться в нескольких pbuf.

person phodina    schedule 28.01.2017