这是我遇到的一个非常奇怪的错误,它似乎是 WinRT 框架的限制。复制这个问题的代码会占用太多空间,所以我会尽可能地描述它。在我的应用程序中,UI 由一些静态 TextBlock、一个不确定的进度条、一个确定的进度条和一个每秒更新的状态 TextBlock 组成。
DatagramSocket
当使用高速 (~30Mbps)下载 UDP 数据包时,网络层和应用层之间会发生明显的数据包丢失 (>60%)。我说它在应用层,因为在执行下载时运行数据包跟踪(例如netsh trace)会显示网络层正在接收的所有数据包,而应用层没有。
我只能假设 WinRT 框架无法跟上MessageReceived
需要触发回调函数的速度。我还没有找到任何对 UDP 下载执行任何缓冲的方法。我发现接收 UDP 数据包的唯一方法是回调函数,它为每个单独的数据包触发。
同样,这种应用层数据包丢失发生在 30Mbps 左右的下载速度下。在 10Mbps 等较慢的速度下看不到它。
有没有其他人遇到过这个问题,或者有没有人知道在执行 UDP 下载时执行缓冲的方法?