語言

NamedPipeServerStream 類別

定義

在命名管線周圍暴露 a 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 一個物件,其 PipeDirection 值為 Out。伺服器接著等待 NamedPipeClientStream 子程序中的物件連接到它。 在這個例子中,兩個程序都存在於同一台電腦上,且 NamedPipeClientStream 物件值為 PipeDirectionIn。 父程序接著將使用者提供的字串傳送給子程序。 這串字串會顯示在主控台上。

這個範例是針對伺服器程序,該程序使用 了 這個 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 物件共用。

任何程序都可以作為命名的管道伺服器或客戶端,或兩者兼具。

關於閱讀與寫入的執行緒安全,最多可由單一讀者與一名寫入者同時使用同一個實例。

建構函式

名稱 Description
NamedPipeServerStream(PipeDirection, Boolean, Boolean, SafePipeHandle)

從指定的管線柄初始化該類別的新實例 NamedPipeServerStream 。

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

初始化一個新實例, NamedPipeServerStream 包含指定的管線名稱、管線方向、最大伺服器實例數、傳輸模式、管線選項、建議的進出緩衝區大小、管線安全性、繼承模式及管線存取權。

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

初始化一個新實例 NamedPipeServerStream ,包含指定的管線名稱、管線方向、最大伺服器實例數、傳輸模式、管線選項、建議的入出緩衝區大小、管線安全性及繼承模式。

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

初始化該類別的新實例 NamedPipeServerStream ,包含指定的管線名稱、管線方向、最大伺服器實例數、傳輸模式、管線選項、建議的進出緩衝區大小,以及管線安全性。

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

初始化一個類別的新實例 NamedPipeServerStream ,並依指定的管線名稱、管線方向、最大伺服器實例數、傳輸模式、管線選項及建議的緩衝區大小初始化。

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

初始化一個新實例 NamedPipeServerStream ,包含指定的管線名稱、管線方向、最大伺服器實例數、傳輸模式及管線選項。

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode)

初始化類別的新實例 NamedPipeServerStream ,使用指定的管線名稱、管線方向、最大伺服器實例數及傳輸模式。

NamedPipeServerStream(String, PipeDirection, Int32)

初始化一個以指定管線名稱、管線方向及最大伺服器實例數的新類別實例 NamedPipeServerStream 。

NamedPipeServerStream(String, PipeDirection)

初始化一個以指定管線名稱與管線方向的新類別實例 NamedPipeServerStream 。

NamedPipeServerStream(String)

初始化一個以指定管線名稱的新類別實例 NamedPipeServerStream 。

欄位

名稱 Description
MaxAllowedServerInstances

代表系統資源允許的最大伺服器實例數量。

屬性

名稱 Description
CanRead

會取得一個值,表示目前串流是否支援讀取操作。

(繼承來源 PipeStream)
CanSeek

會獲得一個值,表示目前串流是否支援尋道操作。

(繼承來源 PipeStream)
CanTimeout

取得值,這個值會判斷目前的數據流是否可以逾時。

(繼承來源 Stream)
CanWrite

會獲得一個值,表示目前串流是否支援寫入操作。

(繼承來源 PipeStream)
InBufferSize

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

(繼承來源 PipeStream)
IsAsync

會取得一個值,表示物件是 PipeStream 非同步或同步開啟。

(繼承來源 PipeStream)
IsConnected

取得或設定一個值,表示物件是否 PipeStream 連通。

(繼承來源 PipeStream)
IsHandleExposed

會取得一個值,表示物件的 handle PipeStream 是否被暴露。

(繼承來源 PipeStream)
IsMessageComplete

會取得一個值,表示最近一次讀取操作回傳的訊息中是否有更多資料。

(繼承來源 PipeStream)
Length

取得串流長度,以位元組為單位。

(繼承來源 PipeStream)
OutBufferSize

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

(繼承來源 PipeStream)
Position

取得或設定當前串流的當前位置。

(繼承來源 PipeStream)
ReadMode

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

(繼承來源 PipeStream)
ReadTimeout

會取得或設定一個以毫秒為單位的值,決定串流在逾時前嘗試讀取的時間長短。

(繼承來源 Stream)
SafePipeHandle

會拿到管子本地端的安全把手,該管子是當前 PipeStream 物體所包覆的。

(繼承來源 PipeStream)
TransmissionMode

取得由現有管線支援的管道傳輸模式。

(繼承來源 PipeStream)
WriteTimeout

取得或設定一個毫秒級的值,決定串流在逾時前嘗試寫入的時間長短。

(繼承來源 Stream)

方法

名稱 Description
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, Int32)

從目前串流讀取位元組,並依指定緩衝區大小寫入另一串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyTo(Stream)

從目前串流讀取位元組,然後寫入另一條串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream, CancellationToken)

使用指定的取消標記,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream, Int32, CancellationToken)

非同步地從目前串流讀取位元組,並使用指定的緩衝區大小與取消標記寫入另一串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream, Int32)

非同步讀取目前串流的位元組,並以指定的緩衝區大小寫入另一串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream)

非同步地從目前串流讀取位元組,然後寫入另一條串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CreateObjRef(Type)

建立一個物件,包含產生代理伺服器所需的所有相關資訊,用於與遠端物件通訊。

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

分配一個 WaitHandle 物件。

(繼承來源 Stream)
Disconnect()

斷開目前的連線。

Dispose()

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

(繼承來源 Stream)
Dispose(Boolean)

釋放類別使用的 PipeStream 非管理資源,並可選擇性地釋放受管理資源。

(繼承來源 PipeStream)
DisposeAsync()

非同步釋放 Stream.

(繼承來源 Stream)
EndRead(IAsyncResult)

結束暫止的異步讀取要求。

(繼承來源 PipeStream)
EndWaitForConnection(IAsyncResult)

結束一個非同步操作,等待用戶端連線。

EndWrite(IAsyncResult)

結束一個待處理的非同步寫入請求。

(繼承來源 PipeStream)
Equals(Object)

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

(繼承來源 Object)
Finalize()

在實例被垃圾回收前,釋放未管理的資源並執行其他清理操作 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)

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

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

非同步地從目前串流讀取一串位元組到指定位置的位元組陣列,並以指定位元組數為基礎,並依讀取位元組數前進,並監控取消請求。

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

非同步讀取當前串流的位元組序列,並依讀取位元組數推進串流中的位置。

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

非同步從指定位置的位元組陣列寫入指定數量的位元組,依照寫入位元組數將該串流中當前位置推進,並監控取消請求。

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

非同步地將一串位元組寫入目前串流,並依照寫入的位元組數將該串流中的當前位置往前推進。

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

非同步地將一串位元組寫入目前串流,依照寫入位元組數將該串流中的當前位置前進,並監控取消請求。

(繼承來源 PipeStream)
WriteByte(Byte)

會寫入一個位元組到目前的串流。

(繼承來源 PipeStream)

擴充方法

名稱 Description
ConfigureAwait(IAsyncDisposable, Boolean)

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

CopyToAsync(Stream, PipeWriter, CancellationToken)

非同步讀取 的 Stream 位元組並使用消去標記寫入指定的 PipeWriter。

GetAccessControl(PipeStream)

回傳管線流的安全資訊。

SetAccessControl(PipeStream, PipeSecurity)

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

適用於