webserver网页打不开的问题

2019-07-24 13:40发布

网页的代码为[mw_shl_code=c,true]HTTP/1.1 200 OK Content-type: text/html <html><head><title>Congrats!</title></head><body><h1>Welcome to our lwIP HTTP server!</h1><p>This is a small test page, served by httpserver-netconn.</body></html> [/mw_shl_code]

webserver收到一个TCP连接请求就开启一个子线程,子线程代码为[mw_shl_code=c,true]//TCP服务器子线程任务函数
static void tcp_server_thread_task(void *p_arg)
{
        OS_ERR err;
        err_t recv_err,write_err;
        struct netconn *conn;
        struct netbuf *recvbuf;
        char *data;
        u16 len;
        u8 i;
        conn=(struct netconn *)p_arg;
        //conn->recv_timeout = 10;
        while(1)
        {
                recv_err=netconn_recv(conn,&recvbuf);
                if(recv_err==ERR_OK)
                {
                        netbuf_data(recvbuf,(void **)&data,&len);
                                //printf("%s",data);
                        if (len>=5 &&
        data[0]=='G' &&
        data[1]=='E' &&
        data[2]=='T' &&
        data[3]==' ' &&
        data[4]=='/' ) {
      
                                        write_err=netconn_write(conn, http_index_html, sizeof(http_index_html), NETCONN_COPY);//发送网页

                                }
                        netbuf_delete(recvbuf);        //不要忘记释放BUF
                }
                else
                {
                        netconn_close(conn);
                        netconn_delete(conn);
                        for(i=0;i<TCPSERVER_THREAD_MAX_NUM;i++)
                        {
                                if(TCPSERVER_THREAD.THREAD_TASK_PRIO==OSTCBCurPtr->Prio)
                                {
                                        TCPSERVER_THREAD.flag_use=0;
                                        break;
                                }
                        }
                        printf("%d子线程断开与服务器连接 ",i);
                        OSTaskDel(NULL,&err);//删除任务自身
                }
        }
       
}[/mw_shl_code]现在的问题是,服务器返回给浏览器网页之后,要关闭TCP连接,浏览器才会显示出网页内容,如果不关闭则显示不了。有人遇到过这种情况,知道什么原因吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。