是否有任何方法(最好在C#中)不改变应用程序协议和创建单独的专用连接而定期测量连接层延迟(往返),例如使用类似的SYN技巧,如tcping做,但不关闭/打开连接?
我正在通过给定的基于ASCII的协议连接到服务器(并且总是使用TCP_NODELAY)。服务器向我发送大量离散消息,我定期发送“心跳”有效负载(但没有对心跳的响应有效负载)。我不能更改协议,而且在许多情况下,我也不能创建到服务器的多个物理连接。
发布于 2014-03-24 17:46:43
请记住,TCP做加窗,所以这可能会导致问题时,试图实现一个优雅的SEQ/ACK解决方案。(您需要序列,而不是同步)
编辑:剪了一个非常复杂和混乱的解释。
我不得不说最好的方法是使用一种简单的秒表方法来启动一个计时器,发出一个非常小的请求或投票,并测量从它返回的时间。如果该查询确实是您所能完成的最轻的查询,那么应该给您合理期望等待的最少时间,这有时比ping更有价值(这可能会误导)。
如果您确实需要网络时间来进行机器和返回,只需使用ICMP平即可。
https://stackoverflow.com/questions/22616595
复制相似问题