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 错误代码 文档以获取错误的详细说明。