NetworkStream.Read 方法  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| Read(Span<Byte>) | 从 NetworkStream 读取数据,并将其存储到内存中的字节范围内。 | 
| Read(Byte[], Int32, Int32) | 从 NetworkStream 读取数据,并将其存储到字节数组中。 | 
Read(Span<Byte>)
- Source:
- NetworkStream.cs
- Source:
- NetworkStream.cs
- Source:
- NetworkStream.cs
从 NetworkStream 读取数据,并将其存储到内存中的字节范围内。
public:
 override int Read(Span<System::Byte> buffer);public override int Read (Span<byte> buffer);override this.Read : Span<byte> -> intPublic Overrides Function Read (buffer As Span(Of Byte)) As Integer参数
存储从 NetworkStream 读取的数据的内存区域。
返回
从 NetworkStream 中读取的字节数。
例外
注解
此方法读取参数中 buffer 可用数据的数量,并返回成功读取的字节数。
注意
通过调用 CanRead 属性检查 是否NetworkStream可读。 如果尝试从不可读的 读取 NetworkStream ,则会收到 InvalidOperationException。
注意
如果收到 ,IOException检查 属性InnerException来确定它是否由 SocketException引起。 如果是这样,请使用 ErrorCode 属性获取特定的错误代码,并参阅 Windows 套接字版本 2 API 错误代码 文档以获取错误的详细说明。
适用于
Read(Byte[], Int32, Int32)
- Source:
- NetworkStream.cs
- Source:
- NetworkStream.cs
- Source:
- NetworkStream.cs
从 NetworkStream 读取数据,并将其存储到字节数组中。
public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int size);public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);public override int Read (byte[] buffer, int offset, int size);public override int Read (byte[] buffer, int offset, int count);override this.Read : byte[] * int * int -> intoverride this.Read : byte[] * int * int -> intPublic Overrides Function Read (buffer As Byte(), offset As Integer, size As Integer) As IntegerPublic Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer参数
- buffer
- Byte[]
一个 Byte 类型的数组,它是内存中用于存储从 NetworkStream 读取的数据的位置。
- offset
- Int32
              buffer 中开始将数据存储到的位置。
- sizecount
- Int32
要从 NetworkStream 中读取的字节数。
返回
从 NetworkStream 中读取的字节数。
例外
              buffer 为 null。
              offset 小于 0。
或
              offset 大于 buffer 的长度。
或
              size 小于 0。
或
              size 大于 buffer 的长度减去 offset。
示例
下面的代码示例使用 DataAvailable 来确定数据是否可供读取。 如果数据可用,则从 NetworkStream中读取数据。
byte[] myReadBuffer = new byte[1024];
StringBuilder myCompleteMessage = new StringBuilder();
int numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
// Read all the data until the end of stream has been reached.
// The incoming message may be larger than the buffer size.
while (numberOfBytesRead > 0)
{
    myCompleteMessage.Append(Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));
    numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
}
// Print out the received message to the console.
Console.WriteLine("You received the following message : " + myCompleteMessage);
注解
此方法将数据读入 buffer 并返回成功读取的字节数。 该 Read 操作读取的数据量与可用数据量相同,最大为 参数指定的 size 字节数。
注意
通过调用 CanRead 属性检查 是否NetworkStream可读。 如果尝试从不可读的 读取 NetworkStream ,则会收到 InvalidOperationException。
注意
如果收到 ,IOException检查 属性InnerException来确定它是否由 SocketException引起。 如果是这样,请使用 ErrorCode 属性获取特定的错误代码,并参阅 Windows 套接字版本 2 API 错误代码 文档以获取错误的详细说明。