您錯過了Content-Length
標題。如果您包含Connection: close
作爲標題以指示連接關閉將指示內容結束,則這不是必需的。
const char msg[] =
"HTTP/1.1 403 Forbidden\r\n"
"Connection: close\r\n"
"Content-Type: text/html\r\n"
"\r\n"
"<!DOCTYPE html>\r\n"
"<html>\r\n"
"\t<head>\r\n"
"\t\t<title>403 - Forbidden</title>\r\n"
"\t</head>\r\n"
"\t<body>\r\n"
"\t\t<h1>403 - Forbidden</h1>\r\n"
"\t</body>\r\n</html>"
;
char sendBuffer[256];
snprintf(sendBuffer, sizeof(sendBuffer), "%s", msg);
您否則將必須動態地或靜態地插入消息主體長度成Content-Length
報頭。
const char msg_header[] =
"HTTP/1.1 403 Forbidden\r\n"
"Content-Length: %d\r\n"
"Content-Type: text/html\r\n"
"\r\n"
"%s"
;
const char msg_body[] =
"<!DOCTYPE html>\r\n"
"<html>\r\n"
"\t<head>\r\n"
"\t\t<title>403 - Forbidden</title>\r\n"
"\t</head>\r\n"
"\t<body>\r\n"
"\t\t<h1>403 - Forbidden</h1>\r\n"
"\t</body>\r\n</html>"
;
char sendBuffer[256];
snprintf(sendBuffer, sizeof(sendBuffer), msg_header,
sizeof(msg_body)-1, msg_body);
由於Eddy_Em指出,沒有必要宣佈Connection: close
如果服務器實際關閉連接。如果您的服務器在發出此消息後未關閉連接,則需要內容長度。
來源
2013-06-04 17:51:03
jxh
您的緩衝區是否足夠容納字符串? –
HTMl沒有\ t標識符 – Magn3s1um
我編輯我的帖子以顯示更多代碼(聲明和零內存調用)。是的,我的緩衝區夠大。 Magn3s1um,這很可能是原因。我應該用什麼替換\ t來製作標籤? (把它作爲答案,以便我可以接受,如果它解決了問題) – Jimmay