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