📜  c# networkstream 读取所有字节 - C# (1)

📅  最后修改于: 2023-12-03 14:39:43.724000             🧑  作者: Mango

C# NetworkStream 读取所有字节

在 C# 编程中,有时候需要从网络流 (NetworkStream) 中读取所有字节数据。本文将介绍如何使用 C# NetworkStream 类读取所有字节,并提供示例代码。

什么是 NetworkStream?

NetworkStream 类是 .NET Framework 中用于在网络连接中进行读写操作的流式数据操作类。它提供了基本的发送和接收数据的方法,并可与其他 I/O 类(如 Socket)配合使用。

读取全部字节

网络通信时,有时需要一次性读取所有的字节数据。这时候可以使用 NetworkStream 类的 Read 方法来实现。

下面是一个从 NetworkStream 中读取所有字节的示例:

NetworkStream stream = client.GetStream(); // 获取 NetworkStream 实例

byte[] buffer = new byte[4096]; // 缓存字节数组

using (MemoryStream memoryStream = new MemoryStream()) // 使用 MemoryStream 类将所有数据读入内存流中
{
    int bytesRead = 0;
    while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) // 持续读取数据并写入缓存字节数组
    {
        memoryStream.Write(buffer, 0, bytesRead); // 将缓存数据写入内存流中
    }
    return memoryStream.ToArray(); // 将内存流中的全部数据转为字节数组并返回
}

在上述示例代码中,首先通过 NetworkStreamGetStream 方法获取到网络流 stream 实例,然后创建一个缓存大小为 4096 的字节数组 buffer

使用 MemoryStream 类可以将所有读取到的字节数据存入内存流中,最后返回内存流中的 byte[]

总结

以上就是使用 C# NetworkStream 读取所有字节的方法。我们可使用 Read 方法不断读取字节,并通过缓存数组和内存流把读取到的字节数据组合起来,即可实现将网络流中的所有字节读取进来的目的。