测量网络上的经过时间

时间:2015-09-17 10:04:20

标签: c++ time

我开发了一个服务器和客户端应用程序,用于使用RTSP将视频帧从一端流式传输到另一端。现在,为了收集有助于我改进应用程序的统计数据,我需要测量发送帧和接收帧之间经过的时间。

目前我正在使用以下公式:

Client_Receive_Timestamp - Server_Send_Timestamp = Elapsed_Time

问题

在我看来,经过的时间大约是100-200ms。我认为原因是服务器时钟和客户端时钟不同步,差异大约为100-200ms。

问题

如何准确测量两个mashines之间的经过时间?

主题Accurately measuring elapsed time between machines建议计算往返延迟。但是,我不能使用此解决方案,因为客户端不会请求帧。它只是通过RTSP接收帧。

1 个答案:

答案 0 :(得分:3)

  

我需要测量发送帧和接收帧之间经过的时间。

您不需要精确的时间戳。您可以平均估计的延迟。

如果A将数据包(或帧)发送给B,B立即响应(*)

(sendTime) ---&gt; B ---&gt; A <子>(receivedTime)

然后您可以轻松计算延迟:

latency = (receivedTime - sendTime) / 2

这当然假设延迟是对称的。如果您研究网络延迟估计算法&#34;您可以找到更精细的算法。短语。

估计潜伏期当然可以估计时差(但似乎没有必要):

(sendTime) ---&gt; B (receivedTimeB) - (receivedTimeB) - &gt;甲

timeDelta = sendTime + latency - receivedTimeB

请注意,即使您平均很多结果,此算法也可能具有高度偏差。这只是作为一般概念的简单示例发布的。

(*)它不会立即发生的事实当然会导致错误。这取决于机器B的装载量。