我有一个客户端,每8秒会发送一个数据包到服务器。如果服务器检测到数据包发送太快,它将断开客户端连接。在客户端我叫睡眠(8000);在发送数据包之前。在服务器端我使用GetTickCount();来计算数据包之间的时间。我预计这工作没有任何问题,但我一直断开连接。数据包计时问题
我使用Wireshark来检查数据包的时间,这是我得到了什么: 包号时间 17 8.656064 72 16.957240 115 24.764741
24.764741 - 16.957240 = 7.807501 < 8就是为什么我被断开的原因。 我不明白这一点,因为在客户端我叫睡眠(8000);所以它应该每8秒或更多时间发送一次数据包。
第二个数据包迟了0.3秒,第三个数据包早约0.2。 有没有办法及时发送这些数据包?
总之,没有。这是一个完全不确定的系统。路径中的任何组件(并且有很多)都不会有任何硬性保证。你将不得不添加一个模糊因素。 – Nim