NamedPipeServerStream 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在命名管線周圍暴露 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 一個物件,其 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 |
|---|---|
| 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 |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
設定如何執行從異步可處置專案傳回的工作等候。 |
| CopyToAsync(Stream, PipeWriter, CancellationToken) |
非同步讀取 的 Stream 位元組並使用消去標記寫入指定的 PipeWriter。 |
| GetAccessControl(PipeStream) |
回傳管線流的安全資訊。 |
| SetAccessControl(PipeStream, PipeSecurity) |
變更現有管線串流的安全屬性。 |