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> -> int
Public 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 -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (buffer As Byte(), offset As Integer, size As Integer) As Integer
Public 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 错误代码 文档以获取错误的详细说明。