NamedPipeServerStream 類別

定義

公開具名管道的 Stream,兼具同步與非同步讀取與寫入操作的支援。

public ref class NamedPipeServerStream sealed : System::IO::Pipes::PipeStream
public sealed class NamedPipeServerStream : System.IO.Pipes.PipeStream
type NamedPipeServerStream = class
    inherit PipeStream
Public NotInheritable Class NamedPipeServerStream
Inherits PipeStream
繼承
NamedPipeServerStream
繼承
NamedPipeServerStream

範例

下列範例示範如何使用具名管道,將字串從父進程傳送至同一部電腦上的子進程。 此範例會在 NamedPipeServerStream 父進程中 PipeDirectionOut 建立 值為 的 物件。然後,伺服器會 NamedPipeClientStream 等候子進程中的物件與其連線。 在此範例中,這兩個進程都位於相同的電腦上, NamedPipeClientStream 而且 物件具有 PipeDirection 的值 In 。 接著,父處理序會將使用者提供的字串傳送給子處理序。 字串會顯示至主控台。

此範例適用于使用 NamedPipeServerStream 類別的伺服器進程。 如需整個程式碼範例,包括管道用戶端和伺服器的程式碼,請參閱 如何:使用具名管道進行網路處理序間通訊

using System;
using System.IO;
using System.IO.Pipes;

class PipeServer
{
    static void Main()
    {
        using (NamedPipeServerStream pipeServer =
            new NamedPipeServerStream("testpipe", PipeDirection.Out))
        {
            Console.WriteLine("NamedPipeServerStream object created.");

            // Wait for a client to connect
            Console.Write("Waiting for client connection...");
            pipeServer.WaitForConnection();

            Console.WriteLine("Client connected.");
            try
            {
                // Read user input and send that to the client process.
                using (StreamWriter sw = new StreamWriter(pipeServer))
                {
                    sw.AutoFlush = true;
                    Console.Write("Enter text: ");
                    sw.WriteLine(Console.ReadLine());
                }
            }
            // Catch the IOException that is raised if the pipe is broken
            // or disconnected.
            catch (IOException e)
            {
                Console.WriteLine("ERROR: {0}", e.Message);
            }
        }
    }
}
Imports System.IO
Imports System.IO.Pipes

Class PipeServer

    Shared Sub Main()
        Dim pipeServer As New NamedPipeServerStream("testpipe", PipeDirection.Out)

        Console.WriteLine("NamedPipeServerStream object created.")

        ' Wait for a client to connect
        Console.Write("Waiting for a client connection...")
        pipeServer.WaitForConnection()

        Console.WriteLine("Client connected.")
        Try
            'Read user input and send that to the client process.
            Dim sw As New StreamWriter(pipeServer)
            sw.AutoFlush = True
            Console.Write("Enter Text: ")
            sw.WriteLine(Console.ReadLine())
        Catch ex As IOException
            ' Catch the IOException that is raised if the pipe is broken
            ' or disconnected
            Console.WriteLine("ERROR: {0}", ex.Message)
        End Try
    End Sub
End Class

備註

具名管道提供單向或雙工管道,以在管道伺服器與一或多個管道用戶端之間進行通訊。 具名管道可用於本機或透過網路進行處理序間通訊。 單一管道名稱可由多個 NamedPipeClientStream 物件共用。

任何進程都可以做為具名管道伺服器或用戶端,或兩者。

建構函式

NamedPipeServerStream(PipeDirection, Boolean, Boolean, SafePipeHandle)

從指定的管道控制碼初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String)

使用指定的管道名稱,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection)

使用指定的管道名稱與管道方向,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection, Int32)

使用指定的管道名稱、管道方向和伺服器執行個體數目上限,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode)

使用指定的管道名稱、管道方向、伺服器執行個體數目上限以及傳輸模式,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions)

使用指定的管道名稱、管道方向、伺服器執行個體數目上限、傳輸模式,以及管道選項,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32)

使用指定的管道名稱、管道方向、伺服器執行個體數目上限、傳輸模式、管道選項,以及建議的輸入與輸出緩衝區大小,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity)

使用指定的管道名稱、管道方向、伺服器執行個體數目上限、傳輸模式、管道選項、建議的輸入與輸出緩衝區大小,以及管道安全性,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity, HandleInheritability)

使用指定的管道名稱、管道方向、伺服器執行個體數目上限、傳輸模式、管道選項、建議的輸入與輸出緩衝區大小、管道安全性,以及繼承模式,初始化 NamedPipeServerStream 類別的新執行個體。

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity, HandleInheritability, PipeAccessRights)

使用指定的管道名稱、管道方向、伺服器執行個體數目上限、傳輸模式、管道選項、建議的輸入與輸出緩衝區大小、管道安全性、繼承模式以及管道存取權限,初始化 NamedPipeServerStream 類別的新執行個體。

欄位

MaxAllowedServerInstances

代表系統資源允許的伺服器執行個體數目上限。

屬性

CanRead

取得值,表示目前的資料流是否支援讀取作業。

(繼承來源 PipeStream)
CanSeek

取得值,表示目前的資料流是否支援搜尋作業。

(繼承來源 PipeStream)
CanTimeout

取得值,該值判斷目前的資料流是否可以逾時。

(繼承來源 Stream)
CanWrite

取得值,表示目前的資料流是否支援寫入作業。

(繼承來源 PipeStream)
InBufferSize

取得管道的傳入緩衝區大小 (以位元組為單位)。

(繼承來源 PipeStream)
IsAsync

取得值,指出 PipeStream 物件是非同步開啟還是同步開啟。

(繼承來源 PipeStream)
IsConnected

取得或定值,指出是否已連接 PipeStream 物件。

(繼承來源 PipeStream)
IsHandleExposed

取得值,指出是否已公開 PipeStream 物件的控制代碼。

(繼承來源 PipeStream)
IsMessageComplete

取得值,指出最近一次讀取作業傳回的訊息中是否有更多資料。

(繼承來源 PipeStream)
Length

取得資料流的長度 (以位元組為單位)。

(繼承來源 PipeStream)
OutBufferSize

取得管道的傳出緩衝區大小 (以位元組為單位)。

(繼承來源 PipeStream)
Position

取得或設定目前資料流目前的位置。

(繼承來源 PipeStream)
ReadMode

取得或設定 PipeStream 物件的讀取模式。

(繼承來源 PipeStream)
ReadTimeout

取得或設定值 (以毫秒為單位),該值決定資料流在逾時前將嘗試讀取多長時間。

(繼承來源 Stream)
SafePipeHandle

取得目前 PipeStream 物件封裝之管道其本機端的安全控制代碼。

(繼承來源 PipeStream)
TransmissionMode

取得目前管道支援的管道傳輸模式。

(繼承來源 PipeStream)
WriteTimeout

取得或設定毫秒值,該值決定在逾時前資料流將嘗試寫入多長時間。

(繼承來源 Stream)

方法

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

開始非同步的讀取作業。

(繼承來源 PipeStream)
BeginWaitForConnection(AsyncCallback, Object)

開始非同步操作,等候用戶端連接。

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

開始非同步的寫入作業。

(繼承來源 PipeStream)
CheckPipePropertyOperations()

確認管道處於可取得或設定屬性的正確狀態。

(繼承來源 PipeStream)
CheckReadOperations()

確認管道處於可讀取作業的連接狀態。

(繼承來源 PipeStream)
CheckWriteOperations()

確認管道處於可寫入作業的連接狀態。

(繼承來源 PipeStream)
Close()

關閉目前資料流和釋放與目前資料流相關聯的任何資源 (例如通訊端和檔案控制代碼)。 請確定正確地處置資料流,而非呼叫這個方法。

(繼承來源 Stream)
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)
Disconnect()

中斷目前的連接。

Dispose()

釋放 Stream 所使用的所有資源。

(繼承來源 Stream)
Dispose(Boolean)

釋放 PipeStream 類別所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 PipeStream)
DisposeAsync()

以非同步方式釋放 Stream 使用的不受控資源。

(繼承來源 Stream)
EndRead(IAsyncResult)

結束擱置的非同步讀取要求。

(繼承來源 PipeStream)
EndWaitForConnection(IAsyncResult)

結束非同步操作,等候用戶端連接。

EndWrite(IAsyncResult)

結束暫止的非同步寫入要求。

(繼承來源 PipeStream)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Finalize()

釋出 Unmanaged 資源並執行其他清除作業後,記憶體回收才能重新回收 NamedPipeServerStream 執行個體。

Flush()

清除目前資料流的緩衝區,並讓所有的緩衝資料全部寫入基礎裝置。

(繼承來源 PipeStream)
FlushAsync()

以非同步的方式清除這個資料流的所有緩衝區,並造成所有緩衝資料都寫入基礎裝置。

(繼承來源 Stream)
FlushAsync(CancellationToken)

以非同步方式清除目前資料流的緩衝區,並讓所有的緩衝資料全部寫入底層裝置。

(繼承來源 PipeStream)
GetAccessControl()

取得 PipeSecurity 物件,該物件會封裝目前 PipeStream 物件所描述之管道的存取控制清單 (ACL) 項目。

(繼承來源 PipeStream)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetImpersonationUserName()

取得管道另一端的用戶端之使用者名稱。

GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
InitializeHandle(SafePipeHandle, Boolean, Boolean)

從指定的 SafePipeHandle 物件初始化 PipeStream 物件。

(繼承來源 PipeStream)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個執行個體的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 物件的淺層複本。

(繼承來源 MarshalByRefObject)
ObjectInvariant()
已淘汰.

提供 Contract 的支援。

(繼承來源 Stream)
Read(Byte[], Int32, Int32)

從資料流讀取位元組區塊,並將資料寫入至起始於指定位置且具有指定長度的指定緩衝區。

(繼承來源 PipeStream)
Read(Span<Byte>)

從目前的資料流讀取位元組序列、將其寫入至位元組陣列,並依讀取的位元組數將資料流中位置往前移。

(繼承來源 PipeStream)
ReadAsync(Byte[], Int32, Int32)

以非同步的方式從目前的資料流讀取位元組序列,並依讀取的位元組數將資料流中的位置往前移。

(繼承來源 Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

以非同步方式將目前資料流中位元組序列讀入起始於指定位置且具有指定位元組數的位元組陣列、依讀取的位元組數將資料流中位置往前移,並監視取消要求。

(繼承來源 PipeStream)
ReadAsync(Memory<Byte>, CancellationToken)

以非同步方式從目前的資料流讀取位元組序列、將其寫入至位元組記憶體範圍、依讀取的位元組數將資料流中位置往前移,並監視取消要求。

(繼承來源 PipeStream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

至少會從目前的資料流程讀取位元組數目,並將資料流程中的位置前移為讀取的位元組數目。

(繼承來源 Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

以非同步方式從目前資料流程讀取至少位元組數目、依讀取的位元組數目將資料流程中的位置往前移,並監視取消要求。

(繼承來源 Stream)
ReadByte()

從管道讀取位元組。

(繼承來源 PipeStream)
ReadExactly(Byte[], Int32, Int32)

count從目前的資料流程讀取位元組數目,並將資料流程中的位置往前移。

(繼承來源 Stream)
ReadExactly(Span<Byte>)

從目前的資料流程讀取位元組,並將資料流程內的位置往前移,直到 buffer 填滿為止。

(繼承來源 Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

以非同步方式從目前資料流程讀取 count 位元組數目、將資料流程內的位置往前移,以及監視取消要求。

(繼承來源 Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

以非同步方式從目前的資料流程讀取位元組、將資料流程內的位置往前移,直到 buffer 填滿為止,並監視取消要求。

(繼承來源 Stream)
RunAsClient(PipeStreamImpersonationWorker)

在模擬用戶端時呼叫委派。

Seek(Int64, SeekOrigin)

將目前資料流目前的位置設為指定的值。

(繼承來源 PipeStream)
SetAccessControl(PipeSecurity)

PipeSecurity 物件所指定的存取控制清單 (ACL) 項目套用至目前 PipeStream 物件所指定的管道。

(繼承來源 PipeStream)
SetLength(Int64)

將目前資料流的長度設定為指定的數值。

(繼承來源 PipeStream)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
WaitForConnection()

等候用戶端連接到這個 NamedPipeServerStream 物件。

WaitForConnectionAsync()

非同步等候用戶端連接到這個 NamedPipeServerStream 物件。

WaitForConnectionAsync(CancellationToken)

非同步等候用戶端連線到這個 NamedPipeServerStream 物件,並且監視取消要求。

WaitForPipeDrain()

等待管道另一端讀取已傳送的所有位元組。

(繼承來源 PipeStream)
Write(Byte[], Int32, Int32)

使用緩衝區的資料,將位元組區塊寫入目前的資料流。

(繼承來源 PipeStream)
Write(ReadOnlySpan<Byte>)

將位元組序列寫入至目前的資料流,並依寫入的位元組數將資料流中目前的位置往前移。

(繼承來源 PipeStream)
WriteAsync(Byte[], Int32, Int32)

以非同步的方式將位元組序列寫入至目前的資料流,並依寫入的位元組數將資料流中目前的位置往前移。

(繼承來源 Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

以非同步方式從起始於指定位置的位元組陣列寫入所指定位元組數、依寫入的位元組數將此資料流中目前位置往前移,並監視取消要求。

(繼承來源 PipeStream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

以非同步的方式將一連串的位元組寫入目前的資料流,由這個資料流中目前的位置前移寫入的位元組數目,並且監視取消要求。

(繼承來源 PipeStream)
WriteByte(Byte)

將位元組寫入目前的資料流。

(繼承來源 PipeStream)

擴充方法

GetAccessControl(PipeStream)

傳回管道串流的安全性資訊。

SetAccessControl(PipeStream, PipeSecurity)

變更現有管道串流的安全性屬性。

ConfigureAwait(IAsyncDisposable, Boolean)

設定如何執行從非同步可處置項目傳回的工作 await。

適用於