【发布时间】:2023-03-30 06:51:02
【问题描述】:
我正在开发 SNTP 客户端,它通过 UDP 从 NTP 服务器获取时间戳。一切正常,我可以下载时间戳和更新 Windows 时钟,但如果 UDP 数据包丢失,我想收到一条消息。如何检测数据包何时丢失?我需要这些信息,因为如果数据丢失,我想获得新的时间戳。
...我该如何测试该功能?如何故意丢失UDP数据包?
【问题讨论】:
-
UDP 是单向的,您无法检测到数据包是否丢失。这是 TCP 和 UDP 的主要区别。
-
这项服务究竟是如何工作的?您的客户端是否向服务器发出请求并等待响应,然后更新它的时间?或者您的客户端是否等待并侦听来自服务器的 UDP 数据包?无论哪种方式,您都无法真正验证 UDP 数据包的传输。根据您的需要,设置超时可能对您来说是一个更好的选择?如果在最后 X 秒内未更新时间或类似情况,则显示警告或引发异常或其他情况?