NetworkStream 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供網路存取的基礎數據流。
public ref class NetworkStream : System::IO::Stream
public class NetworkStream : System.IO.Stream
type NetworkStream = class
inherit Stream
type NetworkStream = class
inherit Stream
interface IDisposable
Public Class NetworkStream
Inherits Stream
- 繼承
- 繼承
- 實作
備註
此 NetworkStream 類別提供在阻塞模式下透過 Stream 套接字傳送與接收資料的方法。 關於阻塞與非阻塞 Socket的更多資訊,請參閱 使用非同步用戶端套接字。 你可以用這 NetworkStream 門課來進行同步和非同步的資料傳輸。 欲了解更多關於同步與非同步通訊的資訊,請參見 Sockets。
要建立 , NetworkStream你必須提供連通 Socket。 你也可以指定它NetworkStream對所提供的Socket權限。FileAccess 預設情況下,關閉 並 NetworkStream 不會關閉所提供的 Socket。 如果你想讓 有 NetworkStream 權限關閉所提供的 Socket參數,你必須指定 true 參數的 ownsSocket 值。
使用 Write 與 Read 方法進行簡單的單執行緒同步區塊輸入輸出。 如果你想非同步處理 I/O,可以考慮使用 Task or ValueTask為基礎的方法 ReadAsync 和 WriteAsync。
它 NetworkStream 不支援對網路資料流的隨機存取。 屬性的 CanSeek 值,指示串流是否支援尋道,總是 false;讀取屬性 Position 、讀取 Length 屬性或呼叫 Seek 方法都會拋出 NotSupportedException。
讀寫操作可以同時在類別的 NetworkStream 實例上執行,無需同步。 只要寫入作業有一個唯一線程,而且讀取作業有一個唯一線程,讀取和寫入線程之間就不會有交叉干擾,而且不需要同步處理。
建構函式
| 名稱 | Description |
|---|---|
| NetworkStream(Socket, Boolean) |
初始化該類別的新實例 NetworkStream ,針對指定的 Socket 類別,並擁有指定 Socket 所有權。 |
| NetworkStream(Socket, FileAccess, Boolean) |
為指定的Socket類別建立一個新的實例NetworkStream,並擁有指定的存取權限和所有Socket權。 |
| NetworkStream(Socket, FileAccess) |
為指定的Socket類別建立一個新的實例NetworkStream,並擁有指定的存取權限。 |
| NetworkStream(Socket) |
為指定的Socket類別建立一個新的實例NetworkStream。 |
屬性
| 名稱 | Description |
|---|---|
| CanRead |
會得到一個表示支撐讀數的 NetworkStream 值。 |
| CanSeek |
取得值,這個值表示數據流是否支持搜尋。 目前不支援這個屬性。 此性質總是返回 |
| CanTimeout |
表示超時屬性是否可用於 NetworkStream。 |
| CanWrite |
會有一個值來表示是否 NetworkStream 支持寫作。 |
| DataAvailable |
會得到一個值,表示資料是否存在 NetworkStream 於待立即讀取的 上。 |
| Length |
取得數據流上可用的數據長度。 此性質目前未被支援,且總是拋 NotSupportedException出 。 |
| Position |
取得或設定數據流中的目前位置。 此性質目前未被支援,且總是拋 NotSupportedException出 。 |
| Readable |
取得或設定一個值,指示是否能讀取。NetworkStream |
| ReadTimeout |
取得或設定讀取作業封鎖等候數據的時間量。 |
| Socket |
取得底層 Socket。 |
| Writeable |
會得到一個值,表示 是否 NetworkStream 可寫。 |
| WriteTimeout |
取得或設定寫入作業封鎖等候數據的時間量。 |
方法
| 名稱 | Description |
|---|---|
| BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
從 開始非同步讀取。NetworkStream |
| BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
開始對數據流進行異步寫入。 |
| Close() |
關閉 NetworkStream. |
| Close() |
關閉目前的數據流,並釋放與目前數據流相關聯的任何資源(例如套接字和檔句柄)。 請確定已正確處置數據流,而不是呼叫此方法。 (繼承來源 Stream) |
| Close(Int32) |
在等待指定時間讓資料傳送後關閉。NetworkStream |
| Close(TimeSpan) |
在等待指定時間讓資料傳送後關閉。NetworkStream |
| CopyTo(Stream, Int32) |
從目前的數據流讀取位元組,並使用指定的緩衝區大小將它們寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
| CopyTo(Stream) |
從目前的數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
| CopyToAsync(Stream, CancellationToken) |
使用指定的取消標記,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
| CopyToAsync(Stream, Int32, CancellationToken) |
使用指定的緩衝區大小和取消標記,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
| CopyToAsync(Stream, Int32) |
使用指定的緩衝區大小,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
| CopyToAsync(Stream) |
以異步方式從目前的數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
| CreateObjRef(Type) |
建立物件,其中包含產生用來與遠端物件通訊之 Proxy 所需的所有相關信息。 (繼承來源 MarshalByRefObject) |
| CreateWaitHandle() |
已淘汰.
已淘汰.
已淘汰.
分配一個 WaitHandle 物件。 (繼承來源 Stream) |
| Dispose() |
釋放所有由 Stream. (繼承來源 Stream) |
| Dispose(Boolean) |
釋放 未管理的資源, NetworkStream 並可選擇性地釋放受管理資源。 |
| DisposeAsync() |
非同步釋放 Stream. (繼承來源 Stream) |
| EndRead(IAsyncResult) |
處理異步讀取的結尾。 |
| EndWrite(IAsyncResult) |
處理異步寫入的結尾。 |
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| Finalize() |
釋放所有由 NetworkStream. |
| Flush() |
從數據流排清數據。 這個方法保留供日後使用。 |
| FlushAsync() |
以異步方式清除此數據流的所有緩衝區,並導致任何緩衝的數據寫入基礎裝置。 (繼承來源 Stream) |
| FlushAsync(CancellationToken) |
將數據流中的數據排清為異步操作。 |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetLifetimeService() |
已淘汰.
擷取控制這個實例存留期原則的目前存留期服務物件。 (繼承來源 MarshalByRefObject) |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| InitializeLifetimeService() |
已淘汰.
取得存留期服務物件,以控制這個實例的存留期原則。 (繼承來源 MarshalByRefObject) |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| MemberwiseClone(Boolean) |
建立一個 MarshalByRefObject 目前物件的淺層複製品。 (繼承來源 MarshalByRefObject) |
| ObjectInvariant() |
已淘汰.
提供 。Contract (繼承來源 Stream) |
| Read(Byte[], Int32, Int32) |
讀取資料 NetworkStream 並儲存到位元組陣列。 |
| Read(Span<Byte>) |
讀取資料 NetworkStream 並儲存在記憶體中一個位元組區段。 |
| Read(Span<Byte>) |
在衍生類別中覆寫時,從目前數據流讀取位元組序列,並將數據流中的位置依讀取的位元組數目往前移。 (繼承來源 Stream) |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
從 讀取 NetworkStream 資料,並以非同步方式儲存到位元組陣列的指定範圍。 |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
以異步方式從目前數據流讀取位元組序列、依讀取的位元元組數目將數據流中的位置往前移,並監視取消要求。 (繼承來源 Stream) |
| ReadAsync(Byte[], Int32, Int32) |
以異步方式從目前數據流讀取位元組序列,並依讀取的位元元組數目將數據流中的位置往前移。 (繼承來源 Stream) |
| ReadAsync(Memory<Byte>, CancellationToken) |
從 讀取資料 NetworkStream ,並以非同步方式儲存在位元組記憶體範圍內。 |
| ReadAsync(Memory<Byte>, CancellationToken) |
以異步方式從目前數據流讀取位元組序列、依讀取的位元元組數目將數據流中的位置往前移,並監視取消要求。 (繼承來源 Stream) |
| ReadAtLeast(Span<Byte>, Int32, Boolean) |
從目前數據流讀取至少一個字節數目,並將數據流中的位置依讀取的位元組數目往前移。 (繼承來源 Stream) |
| ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
以異步方式從目前數據流讀取至少一個字節數目、依讀取的位元組數目將數據流中的位置往前移,並監視取消要求。 (繼承來源 Stream) |
| ReadByte() |
從 讀取一個位元 NetworkStream 組,並將串流中的位置往前推進一個位元組,若在串流末端則返回 -1。 |
| ReadByte() |
從串流讀取一個位元組,並將串流中的位置往前推進一個位元組,若在串流末端則返回 -1。 (繼承來源 Stream) |
| ReadExactly(Byte[], Int32, Int32) |
從目前串流讀取 |
| ReadExactly(Span<Byte>) |
從目前串流讀取位元組,並推進串流中的位置直到填 |
| ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
非同步讀取 |
| ReadExactlyAsync(Memory<Byte>, CancellationToken) |
非同步讀取目前串流的位元組,推進串流中的位置直到填 |
| Seek(Int64, SeekOrigin) |
將數據流的目前位置設定為指定的值。 此方法目前未被支援,且總是拋 NotSupportedException出 。 |
| SetLength(Int64) |
設定數據流的長度。 此方法總是拋出 。NotSupportedException |
| ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |
| Write(Byte[], Int32, Int32) |
從指定範圍內的位元組陣列寫入資料 NetworkStream 。 |
| Write(ReadOnlySpan<Byte>) |
從唯讀位元組區段寫入資料 NetworkStream 。 |
| Write(ReadOnlySpan<Byte>) |
在衍生類別中覆寫時,將位元組序列寫入目前數據流,並依寫入的位元組數目將這個數據流中的目前位置往前移。 (繼承來源 Stream) |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
將指定範圍內的位元組陣列資料寫入非 NetworkStream 同步操作。 |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
以異步方式將位元組序列寫入至目前的數據流、依寫入的位元組數目將這個數據流中的目前位置往前移,並監視取消要求。 (繼承來源 Stream) |
| WriteAsync(Byte[], Int32, Int32) |
以異步方式將位元組序列寫入目前數據流,並依寫入的位元元組數目,將這個數據流中的目前位置往前移。 (繼承來源 Stream) |
| WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
將資料從唯讀記憶體位元組記憶體範圍寫入 NetworkStream ,作為非同步操作。 |
| WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
以異步方式將位元組序列寫入至目前的數據流、依寫入的位元組數目將這個數據流中的目前位置往前移,並監視取消要求。 (繼承來源 Stream) |
| WriteByte(Byte) |
將一個位元組寫入當前位置 NetworkStream ,並將串流中的位置往前推進一個位元組。 |
| WriteByte(Byte) |
將位元組寫入數據流中的目前位置,並將數據流中的位置往前移一個字節。 (繼承來源 Stream) |
明確介面實作
| 名稱 | Description |
|---|---|
| IDisposable.Dispose() |
此 API 支援此產品基礎結構,但無法直接用於程式碼之中。 釋放所有由 NetworkStream. |
擴充方法
| 名稱 | Description |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
設定如何執行從異步可處置專案傳回的工作等候。 |
| CopyToAsync(Stream, PipeWriter, CancellationToken) |
非同步讀取 的 Stream 位元組並使用消去標記寫入指定的 PipeWriter。 |