NetworkStream.Read 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| 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的記憶體區域。
傳回
讀取到緩衝區的總位元組數介於零(0)到緩衝區長度之間。 該方法僅在請求零位元組或因對等套接字執行優雅關機而無更多位元組可用時回傳零(0)。
例外狀況
那是 NetworkStream 關門的。
備註
此方法會讀取參數中可用的 buffer 資料,並回傳成功讀取的位元組數。
Note
打電話給物業NetworkStream確認是否可讀。CanRead 如果你嘗試從無法讀取的 讀取 NetworkStream ,你會得到一個 InvalidOperationException。
Note
如果你收到, 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 count);
public:
override int Read(cli::array <System::Byte> ^ buffer, int offset, int size);
public override int Read(byte[] buffer, int offset, int count);
public override int Read(byte[] buffer, int offset, int size);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, size As Integer) As Integer
參數
- buffer
- Byte[]
一個型態 Byte 為 的陣列,是記憶體中用來儲存從 讀取的資料 NetworkStream的位置。
- offset
- Int32
該地點 buffer 將開始儲存資料。
- countsize
- Int32
從 中讀取 NetworkStream的位元組數。
傳回
從零(0)到請求計數之間,讀取到緩衝區的總位元組數。 該方法僅在請求零位元組或因對等套接字執行優雅關機而無更多位元組可用時回傳零(0)。
例外狀況
buffer 是 null。
offset 小於0。
-或-
offset 大於 的 buffer長度。
-或-
size 小於0。
-或-
size大於負bufferoffset值的長度。
那是 NetworkStream 關門的。
範例
以下程式碼範例將資料從 NetworkStream 讀取到 緩衝區。 若有資料可用,則持續讀取直到資料流結束,並將接收資料附加於 StringBuilder。
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 讀取盡可能多的資料,直到參數指定的 count 位元組數為止。
Note
打電話給物業NetworkStream確認是否可讀。CanRead 如果你嘗試從無法讀取的 讀取 NetworkStream ,你會得到一個 InvalidOperationException。
Note
如果你收到, IOException請檢查該 InnerException 物業以判斷是否由某個因素 SocketException造成。 若有,請使用 ErrorCode 屬性取得特定錯誤代碼,並參考 Windows Sockets 版本 2 的 API 錯誤代碼文件以了解錯誤的詳細描述。