【显示网页名称的程序】
err_t http_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{
char len[10]; // 存放HTML内容的长度
char str[200]; // 存放HTML内容
char name[100];
char *pstr;
uint8_t i = 0;
if (p != NULL)
{
// 提取页面名称
pstr = (char *)p->payload;
while (*pstr++ != ' ');
while (*pstr != ' ')
name[i++] = *pstr++;
name[i] = '\0'; // 不要忘了结束name字符串
tcp_recved(tpcb, p->tot_len);
// 生成HTML内容
sprintf(str, "<meta charset=\"gb2312\"><title>获取网页名称</title><div style=\"font-family:Arial\"><b>请求的网页文件名称是: </b>%s</div>", name);
sprintf(len, "%d", strlen(str)); // HTML内容的长度
tcp_write(tpcb, STR_AND_SIZE("HTTP/1.1 200 OK\r\nContent-Length: "), TCP_WRITE_FLAG_MORE);
tcp_write(tpcb, STR_AND_SIZE(len), TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
tcp_write(tpcb, STR_AND_SIZE("\r\nKeep-Alive: timeout=5, max=100\r\nConnection: Keep-Alive\r\nContent-Type: text/html\r\n\r\n"), TCP_WRITE_FLAG_MORE);
tcp_write(tpcb, STR_AND_SIZE(str), TCP_WRITE_FLAG_COPY); // 发送HTML内容
pbuf_free(p);
}
return ERR_OK;
}