2010-12-10 42 views
2

這可以是任何類型的數據饋送,讓我們只是說這個例子股票市場數據,因爲這是一個流行的。但我在談論實時數據饋送。所以它不斷髮送數據。互聯網流媒體數據饋送如何工作?

我想了解這是如何實現的。這是否以某種方式通過http發生?我只是不明白客戶端如何連接到服務器,並且服務器發送連續數據,誰能告訴我這是如何工作的技術?客戶端如何連接到服務器?我們來看看C#或Java或其他。這是否發生在http或者其他類型的方式?請詳細說明。

感謝

回答

2

這不是真正從正常的HTTP流量有什麼不同,只是更長時間。

當您打開網站時會發生什麼? (非常粗略的概述)

  1. 您的計算機聯繫服務器,建立連接。
  2. 服務器開始發送數據分組給您。
  3. 您的計算機接收到數據包,可能無序且有些延遲很大,並將它們重新組裝到網站中。
    • 您的計算機發送確認收到的數據包。
    • 服務器將重傳任何尚未收到確認的數據包,但需要等待很長時間(假設它們已被丟棄)。
    • 在接收數據包和/或確認之間,都等待。
  4. 當所有顯示網站所需的數據都被傳送完畢,您的計算機向服務器報告時間並斷開連接。

如果在這個過程中的任何一點,任何一方都會停止響應很長時間,那麼任何一方都可能會斷開連接,假設有技術上的困難。

「流數據饋送」發生了什麼? (更粗糙的概述)

  1. 客戶端聯繫服務器,建立連接。
  2. 服務器開始發送數據拆分到客戶端的數據。
  3. 客戶端接收到數據包,可能無序,有些延遲很大,然後重新組裝它們。
    • 客戶端發送確認收到的數據包。
    • 服務器將重傳任何尚未收到確認的數據包,但需要等待很長時間(假設它們已被丟棄)。
    • 在接收數據包和/或確認之間,都等待。

唯一的區別是,客戶不掛在服務器上,因爲它仍然預計數據與這兩個都不如快速斷開連接。

的事情是,Web服務器(網頁網站)是專門用於將數據傳送到許多人的小片段的任務,所以他們很快就掛在你一旦所有數據已發送。您的服務器腳本可以簡單地不會退出雖然,並且連接將保持活動狀態。這裏有一個小PHP腳本,將證明:

while (true) { 
    echo '.'; 
    sleep(1); 
} 

這將發送一個新.每秒無限期地(注意,Web服務器需要進行適當配置爲不終止腳本並立即發送輸出)。

嘗試使用Wikipedia article about TCP/IP作爲基礎知識,使用this article about long-polling/HTTP streaming作爲具體示例。

+0

但在流中,他們仍然通過HTTP(端口80)通話?在這樣做的情況下,客戶端如何連接到服務器的例子是什麼?就像我可能鍵入一個網站地址,只是獲取流媒體信息? (我從來沒有看到一個網站做到這一點) – foreyez 2010-12-10 09:00:54