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的許可權,您必須為 ownsSocket
參數的值指定 true
。
針對簡單的單個線程同步封鎖 I/O,請使用 Write 和 Read 方法。 如果您要以異步方式處理 I/O,請考慮使用 Task 或 ValueTask型方法 ReadAsync 和 WriteAsync。
NetworkStream 不支援對網路數據流的隨機存取。
CanSeek 屬性的值,指出數據流是否支持搜尋,一律 false
;讀取 Position 屬性、讀取 Length 屬性,或呼叫 Seek 方法會擲回 NotSupportedException。
讀取和寫入作業可以在 NetworkStream 類別的實例上同時執行,而不需要同步處理。 只要寫入作業有一個唯一線程,而且讀取作業有一個唯一線程,讀取和寫入線程之間就不會有交叉干擾,而且不需要同步處理。
建構函式
NetworkStream(Socket) |
為指定的 Socket建立 NetworkStream 類別的新實例。 |
NetworkStream(Socket, Boolean) |
使用指定的 Socket 擁有權,為指定的 Socket 初始化 NetworkStream 類別的新實例。 |
NetworkStream(Socket, FileAccess) |
使用指定的訪問許可權,為指定的 Socket 建立 NetworkStream 類別的新實例。 |
NetworkStream(Socket, FileAccess, Boolean) |
使用指定的訪問許可權和指定的 Socket 擁有權,為指定的 Socket 建立 NetworkStream 類別的新實例。 |
屬性
CanRead |
取得值,這個值表示 NetworkStream 是否支援讀取。 |
CanSeek |
取得值,這個值表示數據流是否支持搜尋。 目前不支援這個屬性。 這個屬性一律會傳回 |
CanTimeout |
指出 NetworkStream是否可使用逾時屬性。 |
CanTimeout |
取得值,這個值會判斷目前的數據流是否可以逾時。 (繼承來源 Stream) |
CanWrite |
取得值,這個值表示 NetworkStream 是否支援寫入。 |
DataAvailable |
取得值,這個值表示 NetworkStream 上是否有數據可供立即讀取。 |
Length |
取得數據流上可用的數據長度。 目前不支援這個屬性,而且一律會擲回 NotSupportedException。 |
Position |
取得或設定數據流中的目前位置。 目前不支援這個屬性,而且一律會擲回 NotSupportedException。 |
Readable |
取得或設定值,這個值表示是否可以讀取 NetworkStream。 |
ReadTimeout |
取得或設定讀取作業封鎖等候數據的時間量。 |
ReadTimeout |
取得或設定值,以毫秒為單位,決定數據流在逾時之前嘗試讀取的時間長度。 (繼承來源 Stream) |
Socket |
取得基礎 Socket。 |
Writeable |
取得值,這個值表示 NetworkStream 是否可寫入。 |
WriteTimeout |
取得或設定寫入作業封鎖等候數據的時間量。 |
WriteTimeout |
取得或設定值,以毫秒為單位,決定數據流在逾時之前嘗試寫入的時間長度。 (繼承來源 Stream) |
方法
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
從 NetworkStream開始異步讀取。 |
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
開始異步讀取作業。 (請考慮改用 ReadAsync(Byte[], Int32, Int32)。 (繼承來源 Stream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
開始對數據流進行異步寫入。 |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
開始異步寫入作業。 (請考慮改用 WriteAsync(Byte[], Int32, Int32)。 (繼承來源 Stream) |
Close() |
關閉 NetworkStream。 |
Close() |
關閉目前的數據流,並釋放與目前數據流相關聯的任何資源(例如套接字和檔句柄)。 請確定已正確處置數據流,而不是呼叫此方法。 (繼承來源 Stream) |
Close(Int32) |
等候指定的時間允許傳送數據之後,關閉 NetworkStream。 |
Close(TimeSpan) |
等候指定的時間量以允許傳送數據之後,關閉 NetworkStream。 |
CopyTo(Stream) |
從目前的數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
CopyTo(Stream, Int32) |
從目前的數據流讀取位元組,並使用指定的緩衝區大小將它們寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
CopyToAsync(Stream) |
以異步方式從目前的數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
CopyToAsync(Stream, CancellationToken) |
使用指定的取消標記,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
CopyToAsync(Stream, Int32) |
使用指定的緩衝區大小,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
使用指定的緩衝區大小和取消標記,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 這兩個數據流位置都會依複製的位元元組數目進階。 (繼承來源 Stream) |
CreateObjRef(Type) |
建立物件,其中包含產生用來與遠端物件通訊之 Proxy 所需的所有相關信息。 (繼承來源 MarshalByRefObject) |
CreateWaitHandle() |
已淘汰.
已淘汰.
已淘汰.
配置 WaitHandle 物件。 (繼承來源 Stream) |
Dispose() |
釋放 Stream所使用的所有資源。 (繼承來源 Stream) |
Dispose(Boolean) |
釋放 NetworkStream 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。 |
DisposeAsync() |
以異步方式釋放 Stream所使用的 Unmanaged 資源。 (繼承來源 Stream) |
EndRead(IAsyncResult) |
處理異步讀取的結尾。 |
EndRead(IAsyncResult) |
等候暫止的異步讀取完成。 (請考慮改用 ReadAsync(Byte[], Int32, Int32)。 (繼承來源 Stream) |
EndWrite(IAsyncResult) |
處理異步寫入的結尾。 |
EndWrite(IAsyncResult) |
結束異步寫入作業。 (請考慮改用 WriteAsync(Byte[], Int32, Int32)。 (繼承來源 Stream) |
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
Finalize() |
釋放 NetworkStream所使用的所有資源。 |
Flush() |
從數據流排清數據。 這個方法保留供日後使用。 |
FlushAsync() |
以異步方式清除此數據流的所有緩衝區,並導致任何緩衝的數據寫入基礎裝置。 (繼承來源 Stream) |
FlushAsync(CancellationToken) |
將數據流中的數據排清為異步操作。 |
FlushAsync(CancellationToken) |
以異步方式清除此數據流的所有緩衝區、導致任何緩衝的數據寫入基礎裝置,並監視取消要求。 (繼承來源 Stream) |
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) |
以異步方式從目前數據流讀取位元組序列,並依讀取的位元元組數目將數據流中的位置往前移。 (繼承來源 Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
從 NetworkStream 讀取數據,並將其儲存至位元組陣列的指定範圍做為異步操作。 |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
以異步方式從目前數據流讀取位元組序列、依讀取的位元元組數目將數據流中的位置往前移,並監視取消要求。 (繼承來源 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) |
以異步方式將位元組序列寫入目前數據流,並依寫入的位元元組數目,將這個數據流中的目前位置往前移。 (繼承來源 Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
將數據寫入位元組陣列指定範圍的 NetworkStream 做為異步操作。 |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
以異步方式將位元組序列寫入至目前的數據流、依寫入的位元組數目將這個數據流中的目前位置往前移,並監視取消要求。 (繼承來源 Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
將數據從只讀記憶體位元組記憶體範圍寫入 NetworkStream 做為異步操作。 |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
以異步方式將位元組序列寫入至目前的數據流、依寫入的位元組數目將這個數據流中的目前位置往前移,並監視取消要求。 (繼承來源 Stream) |
WriteByte(Byte) |
將位元組寫入 NetworkStream 中目前的位置,並將數據流中的位置往前移一個字節。 |
WriteByte(Byte) |
將位元組寫入數據流中的目前位置,並將數據流中的位置往前移一個字節。 (繼承來源 Stream) |
明確介面實作
IDisposable.Dispose() |
此 API 支援此產品基礎結構,但無法直接用於程式碼之中。 釋放 NetworkStream所使用的所有資源。 |
擴充方法
CopyToAsync(Stream, PipeWriter, CancellationToken) |
使用取消標記,以異步方式從 Stream 讀取位元組,並將其寫入指定的 PipeWriter。 |
ConfigureAwait(IAsyncDisposable, Boolean) |
設定如何執行從異步可處置專案傳回的工作等候。 |