我想通过套接字传输数据,目前我正在创建一个内存流。
我也可以使用网络流。
有谁能帮我理解c#网络流和内存流之间的区别?
答案 0 :(得分:3)
NetworkStream
与套接字直接相关;它不知道它自己的长度,你不能寻求,并且读/写功能直接绑定到接收/发送API(因此,读和写完全无关)。它可以超时,如果等待更多数据,读取可能需要相当长的时间。
MemoryStream
基本上是本地byte[]
的包装器。它有一个已知的长度(可以改变),你可以寻找和读/写是直接相关的:两个都增加相同的位置光标,你可以写东西,倒回,然后读它。所有操作都非常及时。
可能更容易问“有什么相似之处”,这很简单:两者都有一个读/写API,因为它是Stream
的子类。
答案 1 :(得分:0)
这两个流都是Stream派生的,这个类适用于不同的目的
答案 2 :(得分:0)
根据我的理解,网络流从网络接口读取,如果你使用内存流(我的意思是,在相同的场景中),所有数据将首先加载到内存(我假设它读到最后) (实际流),然后读操作将从内存中读取。
在Memory Stream上进行第一次读取操作,所有数据都需要加载到内存中。
在网络流的哪个位置,您可以在数据到达时读取数据。