作为我的学生团体业余爱好项目的一部分,我正在创建微控制器有线网络的模拟,以测试我们编写的算法。每个控制器连接到多个数据端口,每个端口都有一个输入和输出流。我通过为每个端口提供BinaryReader
和BinaryWriter
来建模这种关系,每个端口都由自己的MemoryStream
支持。然而,当我试图连接'时,我遇到了麻烦。不同控制器之间的端口模拟延迟超出了模拟迭代的范围,所以我只需要以某种方式直接链接它们。
所以我的问题是:如何使用两个不同的BinaryReader
/ BinaryWriter
或MemoryStream
集合伪造这样的IO流,这样当我写一个时,另一个可以马上读了吗?
答案 0 :(得分:0)
我最终使用通过环回地址相互连接的UDP套接字,它很好地模拟了网络的异步性质,而没有处理延迟问题。
我不允许发布实际代码,但实现起来相当简单。每个数据端口都有UdpClient
命名空间中自己的System.Net.Sockets
和随机分配的UDP端口。更新循环遍历每个端口并根据需要调用udpClient.Send()
和udpClient.Receive()
函数,使用简单的byte[]
缓冲区来处理不完整的消息。我认为.Net中高级网络的概述超出了这个问题的范围,但MSDN上有一些很好的资源可供Google搜索。