C#网络流和套接字上下文中的内存流有什么区别?

时间:2012-09-07 10:26:46

标签: c# .net sockets

我想通过套接字传输数据,目前我正在创建一个内存流。

我也可以使用网络流。

有谁能帮我理解c#网络流和内存流之间的区别?

3 个答案:

答案 0 :(得分:3)

NetworkStream与套接字直接相关;它不知道它自己的长度,你不能寻求,并且读/写功能直接绑定到接收/发送API(因此,读和写完全无关)。它可以超时,如果等待更多数据,读取可能需要相当长的时间。

MemoryStream基本上是本地byte[]的包装器。它有一个已知的长度(可以改变),你可以寻找和读/写是直接相关的:两个都增加相同的位置光标,你可以写东西,倒回,然后读它。所有操作都非常及时。

可能更容易问“有什么相似之处”,这很简单:两者都有一个读/写API,因为它是Stream的子类。

答案 1 :(得分:0)

这两个流都是Stream派生的,这个类适用于不同的目的

答案 2 :(得分:0)

根据我的理解,网络流从网络接口读取,如果你使用内存流(我的意思是,在相同的场景中),所有数据将首先加载到内存(我假设它读到最后) (实际流),然后读操作将从内存中读取。

在Memory Stream上进行第一次读取操作,所有数据都需要加载到内存中。

在网络流的哪个位置,您可以在数据到达时读取数据。