Faking IO Streams

本文关键字:Streams IO Faking | 更新日期: 2023-09-27 18:17:46

作为我的学生小组的爱好项目的一部分,我正在创建一个微控制器有线网络的模拟,以测试我们编写的算法。每个控制器都连接到几个数据端口,每个端口都有一个输入和输出流。我通过给每个端口一个BinaryReaderBinaryWriter来建模这种关系,每个端口都有自己的MemoryStream。然而,当我试图"连接"不同控制器之间的端口时,我遇到了一个障碍。模拟延迟超出了本次模拟迭代的范围,所以我只需要以某种方式将它们直接链接起来。

所以我的问题是:我如何使用两个不同的BinaryReader/BinaryWriterMemoryStream集伪造这样的IO流,这样当我写一个时,另一个可以立即读取它?

Faking IO Streams

我最终使用了通过环回地址相互连接的UDP套接字,这很好地模拟了网络的异步特性,而无需处理延迟问题。

我不允许发布实际的代码,但是实现是相当简单的。每个数据端口都有自己的UdpClient(来自System.Net.Sockets命名空间)和一个随机分配的UDP端口。更新循环遍历每个端口,并酌情调用udpClient.Send()udpClient.Receive()函数,使用一个简单的byte[]缓冲区来处理不完整的消息。我认为。net中高级网络的概述超出了这个问题的范围,但是在MSDN上有一些很好的资源,只需谷歌搜索即可。