|
本帖最后由 技术萌新 于 2021-4-12 09:32 编辑
最近在做一个HTTP Server,使用NETCONN编程接口来处理浏览器的请求,浏览器通过POST发送一个100k的文件到lwip这里,问题是为什么通过netbuf或者pbuf始终只能获取1460字节的数据?通过pbug->next为空,这样就只能拿到浏览器发送过来的HTTP 请求头信息,POST包含的数据部分就看不到。不知道哪里出了问题
这是设置监听浏览器发送请求
这里是处理浏览器发来的数据,只能看到一帧数据:
------------------------------------------------------------------------------------------------------
重新写了个测试函数:
static void http_tcp_thread(void *arg)
{
struct netconn *conn, *newconn;
err_t err, accept_err;
struct netbuf *inbuf;
void *data;
uint16_t len;
conn = netconn_new(NETCONN_TCP);
if(conn != NULL)
{
err = netconn_bind(conn, IP_ADDR_ANY, 80);
if(err == ERR_OK)
{
netconn_listen(conn);
while(1)
{
accept_err = netconn_accept(conn, &newconn);
if(accept_err == ERR_OK)
{
while((err = netconn_recv(newconn, &inbuf)) == ERR_OK)
{
do
{
netbuf_data(inbuf, &data, &len);
printf("%s",data);
}
while(netbuf_next(inbuf) >= 0);
netbuf_delete(inbuf);
}
netconn_close(newconn);
netconn_delete(newconn);
}
}
}
}
}
用wairshark抓包看了下,感觉是lwip没有配置好,接收性能有问题!
|
|