i want to transfer data over sockets and currently i am creating a memory stream.
i can also use a network stream.
Can anyone please help me understand the difference between c# network stream and memory stream?
ANetworkStream
与套接字直接相关;它不知道自己的长度,你无法寻找,读/写函数直接绑定到接收/发送API(因此,读和写完全不相关)。它可能会超时,如果等待更多数据,读取可能需要相当长的时间。
AMemoryStream
基本上是一个本地的包装器byte[]
。它有一个已知的长度(可以改变),你可以寻找,读/写直接相关:两者都增加相同的位置光标,你可以写一些东西,倒带,然后读它。所有的操作都非常及时。
问“有什么相似之处”可能更容易,这很简单:两者都有一个读/写 API,因为它们都是Stream
.
两个流都是 Stream 的派生,这些类出于不同的目的而变形
根据我的理解,网络流从网络接口读取,如果你使用内存流(我的意思是,在同一场景中),所有数据将首先加载到内存中(我假设它读取到实际的末尾流),然后读取操作将从内存中读取。
内存流上发生的第一个读取操作,需要将所有数据加载到内存中。
在网络流的地方,您可以在数据到达时读取它们。