如何测量网络延迟(ping)?

3

我知道如何计算ping的时间——当前时间减去数据包的时间戳——但是我该如何首先创建一个时间戳呢?我可以使用什么同步时间概念?注意:我使用的是.NET 2.0。

1个回答

4
当你发出ping请求时(稍后我会详细解释),你可以记录当前时间,然后当服务器/客户端回复pong时,再次记录时间。将pong时间减去ping时间即可得到两个应用程序之间通信所需的时间。
维基百科以下方式描述了ping:
在多人在线视频游戏、MMO、MMORPG、MMOFPS和FPS中,“ping”(不要与每秒帧数混淆)指的是玩家计算机(客户端)与游戏服务器或另一个客户端(即对等方)之间的网络延迟。这可以被报告为平均时间(以毫秒为单位)。游戏程序员通常不使用传统的ICMP回显请求和回复数据包来确定ping时间,而是将自己的延迟检测构建到现有的游戏数据包中。

我喜欢做的事情是,当我制作客户端和服务器时,我总是编写一个简单的“ping/pong”命令。简而言之,一个应用程序发出ping请求,当另一个应用程序接收到它并发送回pong确认命令。这对于调试很有帮助,但对于实际开发和根据游戏的不同,我通常会与心跳一起使用,以确保一切正常运行。希望这有所帮助!


谢谢你的回答!有一件事我不太确定,那就是ping和pong时间是什么。 - JPtheK9
这是一篇有趣的阅读:http://www.numion.com/faq/ping.htmlPing是往返时间(您告诉远程应用程序向您发送回复,然后等待响应)。相比之下,“纯延迟测量”则测量单向延迟。 - return true
这是如何进行延迟测量的好答案 - return true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接