NetworkStream.Read 方法

定义

重载

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

参数

buffer
Span<Byte>

存储从 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 中读取的字节数。

例外

buffernull

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

另请参阅

适用于