2010-12-10 52 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