#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
}