如何计时 TCP/IP 交易

How to Time TCP/IP Transaction

我目前有 2 个客户端服务器模型。在这两种情况下,我都将大量数据从服务器传递到客户端。我想计算数据在服务器端序列化到客户端收到所有数据需要多长时间;最后,我想看看一个模型比另一个模型快多少。

我的问题:最好的方法是什么?

我的抱怨是,这需要在服务器端启动计时器并在客户端设置停止时间。虽然我可以获取两台机器各自的启动和停止时间,但这种方法存在几个问题,例如两台机器的系统时间不同步,时区差异等...

我目前正在查看 1 个模型的各个指标,并将其与另一个模型进行比较,该模型有效但未完全捕获总体交易时间。

让客户端在收到所有内容后做出响应。这样服务器就知道什么时候了并且可以自己执行测量。您将额外测量一次往返行程,但所有测量结果大致相同。

这是一个半途而废的方法:

在客户端启动一个计时器,并调用服务器。服务器做的第一件事是启动一个计时器。在处理结束时,它会停止计时器,计算处理所花费的时间,然后 return 秒返回给客户端。

然后客户端可以从总时间中减去此时间以确定传输开销(序列化、网络传输时间等),除非您的网络相对繁忙,否则 return 单次响应那个时间的价值不应该很大。如果你很迂腐,你可以执行一个测试,它做同样的事情,但只发送一个时间值,returns 时间值,然后你将它除以二来计算一个的结果方法是,然后从时间中减去它。

当然,网络通信不是一门精确的科学,从一次调用到下一次调用可能需要不同的时间,因此您可能需要执行大量测试,丢弃异常值。

因此,举个例子:

开始计时器:0s。 拨打电话: 收到呼叫:启动新计时器:0s 处理完成:50ms return 50 毫秒 原始接收器得到结果,计时器显示 120 毫秒。

从 120 毫秒减去 50 毫秒,您现在有 70 毫秒,在 return 时间内有一些软糖区域。