0

我正在尝试计算连接的客户端(服务器->客户端)的延迟我想在我的 ping 循环期间执行此操作(它测试客户端是否仍然连接)这是我 ping 它的方式(试图发送数据,如果失败,客户端已断开连接)。

        while (information.connectionEst)
        {
            try
            {


                byte[] data = Encoding.ASCII.GetBytes("");

                stream.Write(data, 0, data.Length);


            }
            catch (Exception e)
            {

                killConnection();
                thread.Abort();
            }

        }

我假设我需要计算发送数据包所花费的时间。但我不知道该怎么做。任何帮助都会受到欢迎。

4

1 回答 1

2

很难获得连接的单向延迟(服务器→客户端)。如果您知道您在连接的每一端都有非常准确的时间(例如 GPS 或原子钟或与此非常接近的高质量 NTP 同步时钟)并且在每一端都运行专门用于该任务的软件,您就可以做到这一点。

否则,你能做的最好的就是计算两个方向的延迟(RTT,往返时间),除以 2,并希望连接是数据包的路径是对称的。如果数据包的路径不对称,则数据包在一个方向上的传输时间比另一个方向要长,您无法先验地知道多长时间。

计算 RTT 很简单:让第一方发送一条短消息,让另一端立即返回另一个。第一方从发送请求消息的时间中减去收到响应消息的时间以获得 RTT。

于 2012-05-05T18:44:30.957 回答