NetworkStream.Read 方法

定義

多載

Read(Span<Byte>)

NetworkStream 讀取資料,並將其儲存於記憶體中的位元組範圍。

Read(Byte[], Int32, Int32)

NetworkStream 讀取資料,並將其儲存於位元組陣列。

Read(Span<Byte>)

來源:
NetworkStream.cs
來源:
NetworkStream.cs
來源:
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 Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

適用於

Read(Byte[], Int32, Int32)

來源:
NetworkStream.cs
來源:
NetworkStream.cs
來源:
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 Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

另請參閱

適用於