NetworkStream.Read 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
Read(Span<Byte>) |
從 NetworkStream 讀取資料,並將其儲存於記憶體中的位元組範圍。 |
Read(Byte[], Int32, Int32) |
從 NetworkStream 讀取資料,並將其儲存於位元組陣列。 |
Read(Span<Byte>)
從 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 Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。
適用於
Read(Byte[], Int32, Int32)
從 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 Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。