【顯示網頁名稱的程序】
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;
}