共用方式為


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 物件具有 InPipeDirection 值。 父進程接著會將使用者提供的字串傳送至子進程。 字串會顯示至主控台。

此範例適用於使用 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所使用的 Unmanaged 資源。

(繼承來源 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()
已淘汰.

擷取控制這個實例存留期原則的目前存留期服務物件。

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

擴充方法

CopyToAsync(Stream, PipeWriter, CancellationToken)

使用取消標記,以異步方式從 Stream 讀取位元組,並將其寫入指定的 PipeWriter

GetAccessControl(PipeStream)

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

SetAccessControl(PipeStream, PipeSecurity)

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

ConfigureAwait(IAsyncDisposable, Boolean)

設定如何執行從異步可處置專案傳回的工作等候。

適用於