2011-04-30 112 views
1

我寫了一個簡單的Web服務器在C監聽連接並通過套接字發送一些文本。 我想我的服務器被服務器訪問。在這種情況下,我應該* * * * * 結尾標題,例如CODE(200),內容類型,內容長度 *。C網絡服務器頭髮送

  • 如何將這些頭文件發送到客戶端(瀏覽器或telnet)?
  • 如何提取請求的標題?
+0

現在這是一個非常廣泛的問題。標題是文本行。解析/格式相應...?谷歌的HTTP協議規範,並從那裏去。 – 2011-04-30 18:30:15

回答

2

(也許,我只是不明白的問題,投我失望。)

HTTP響應報頭格式是不是太困難:

header1\n 
header2\n 
<empty line>\n 
content\n 
content\n 

這就是全部。網絡服務器應該發送標題,一個空行,然後是內容。

如果你想測試頭部發送,你應該用瀏覽器檢查它。一個行添加到您的Web服務器發送以下標題:

Content-Disposition: attachment; filename=download_me.txt 

所以,當你用瀏覽器連接到你的網絡服務器,它會彈出一個「另存爲」對話框,而不是在瀏覽器中顯示已下載的網頁窗口。如果您獲得了對話框,並且下載的文件也可以,則您的網絡服務器會正​​確發送標題。

摹 它的另一個問題,羯羊客戶處理他們爲你(和W3C)希望......

編輯: HTTP OK狀態:

HTTP/1.1 200 OK\n 

谷歌更多的狀態碼。

+0

You @ ern0適合一定的金額。準確地說,我想要知道如何將這些標題發送到瀏覽器。它只是將它們寫入套接字爲休閒? // new_fd是socket文件描述符 ' send(new_fd,「HTTP/1.0 200 OK \ n」,16,0); \t \t \t send(new_fd,「Content-Type:text/html \ n」,24,0); \t \t \t send(new_fd,「Content-Length:29 \ n」,20,0); \t \t \t send(new_fd,「文件內容\ n」,10,0); ' – 2011-05-01 04:57:35

+0

沒錯,就是這樣,沒有任何魔法,只是空的線。正如我所說,用瀏覽器試一下。 Content-lenght不是強制性的。 – ern0 2011-05-01 11:35:13