2014-12-05 41 views
1

我是HTTP客戶端和TCP \ IP編程的新手,所以我的問題可能對有經驗的人很模糊,但請嘗試回答。HTTP客戶端編程 - 如何知道服務器已發送所有數據

我正在實現一個HTTP客戶端,發送請求到服務器之後我正在等待一個讀取事件(異步套接字),當讀取事件時,我正在使用讀取命令提取數據並將其存儲在本地緩衝區中。

這裏如何知道服務器已經發送了所有數據,以便我可以開始處理信息? 我很困惑在這個階段

回答

1

那麼內容可以一起或以大塊的形式返回。當服務器知道有效負載的長度時,它將在響應中提供Content-Length標題。但有時服務器在開始傳輸之前不知道有效負載的總長度,則它使用chunk transfer

+0

考慮內容長度爲零。是否所有的HTTP頭可以在一次讀取?報頭信息不會以兩個數據包發送嗎? @vtortola – evk1206 2014-12-08 06:16:37

+0

如果長度爲0,意味着您可以在獲取空行後停止閱讀:http://www.tutorialspoint.com/http/http_messages.htm – vtortola 2014-12-08 10:35:17

0

服務器的響應應該包含一個http-header,它有一個名爲content-length的字段。您可以使用該長度來確定服務器應發送的數據量。一旦服務器發送給定數量,您就完成接收數據。

+0

將內容長度考慮爲零。是否所有的HTTP頭可以在一次讀取?報頭信息不會以兩個數據包發送嗎? @ Spooky3d0 – evk1206 2014-12-08 06:17:24

+0

抱歉,延遲響應..不應該我收到一封郵件嗎? – Spooky3do 2015-02-26 08:16:31

+0

嗯是的,這是可能的,所以你應該確保等到你收到一個完整的標題..但我相當肯定你現在想通了:) – Spooky3do 2015-02-26 08:21:56

相關問題