#include <string.h>
#include "lwip/tcp.h"
err_t http_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{
    uint16_t i;
    char *pstr;
    if (p != NULL)
    {
        pstr = (char *)p->payload;
        for (i = 0; i < p->len; i++)
            putchar(pstr[i]);
        putchar('\n');
        tcp_recved(tpcb, p->tot_len);
        pbuf_free(p);
    }
    tcp_close(tpcb);
    return ERR_OK;
}
err_t http_connected(void *arg, struct tcp_pcb *tpcb, err_t err)
{
    const char *str = "GET /test2/tech.html HTTP/1.1\r\nHost: 192.168.1.106\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\n\r\n";
    tcp_write(tpcb, str, strlen(str), 0);
    tcp_recv(tpcb, http_recv);
    return ERR_OK;
}
void http_err(void *arg, err_t err)
{
    // PC端一定要关闭防火墙, 否则会连接不上(err=-13=ERR_ABRT)
    printf("Connection failed! err=%d\n", err);
}
void test(void)
{
    ip_addr_t ipaddr;
    struct tcp_pcb *tpcb = tcp_new();
    IP4_ADDR(&ipaddr, 192, 168, 1, 106); // 局域网服务器IP地址
    tcp_err(tpcb, http_err);
    tcp_connect(tpcb, &ipaddr, 81, http_connected); // 端口号为81
}
      