0

我需要实现一种记录 UDP 流的方法,以便稍后根据请求重播该流。此记录和重放必须使用相同的时间(达到合理的分辨率,人类用户几乎无法感知,比如说 10 毫秒):如果原始流在 00:00 到 00:35 秒内有数据,则静音直到 00: 55,然后从 00:55 到 01:34 发送更多数据,当我的应用程序重放该流时,必须观察到相同的分布。

如果只是将 udp 流保存到磁盘然后重放它,如果没有这个时间,使用 Socket、NetworkStream 或 UdpClient 将是微不足道的。问题是我无法设计一种方法来修改标准接收算法以包含该时间,以便稍后通过发送算法轻松重播。作为奖励,还应支持在任何时间标记(例如,从 00:15 开始)开始重播的方式。

1)有什么方法可以在 C# 上轻松实现此功能?我们对此没有任何严格的非功能性要求,我们只需要让它简单地工作。任何有关实现它的方法的提示将不胜感激。

2)如果这确实不是一件简单的事情,并且有人建议为此使用任何第三方组件,则要求它具有 C# 的 API(或从代码操作组件的方法),并希望是开源或免费使用的软件。

非常感谢。

4

1 回答 1

2

这不完全是 C# 的原生特性。但我会尝试做你的功课。

我攻击它的方法仍然是将数据包存储到磁盘。设计一个二进制格式的自定义文件结构,保存有关接收数据报时间的数据,然后是 UDP 数据报本身。然后,您可以让程序读回此文件,找出 UDP 有效负载的交付时间。这将为您提供重播数据包所需的内容并将其存储起来,以便以后使用所有本机 C# 代码重播,无需第三方模块。这当然需要您知道写入/写入文件并能够将相关数据解析为 C# 中的类型化对象(时间跨度,可能是数据报的 byte[] 等)。所有这些决定都取决于你,程序编写者。

总而言之,我 99% 确定这种需求没有原生功能。这正是编程语言存在的原因。因此,我们作为程序员可以为我们的客户/客户/老师提供惊人的解决方案;)

于 2014-07-10T10:05:59.783 回答