NamedPipeServerStream Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Exposes a Stream around a named pipe, supporting both synchronous and asynchronous read and write operations.
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
- Inheritance
- Inheritance
Examples
The following example demonstrates a way to send a string from a parent process to a child process on the same computer using named pipes. This example creates a NamedPipeServerStream object in a parent process with a PipeDirection value of Out. The server then waits for a NamedPipeClientStream object in a child process to connect to it. In this example, both processes are on the same computer and the NamedPipeClientStream object has a PipeDirection value of In. The parent process then sends a user-supplied string to the child process. The string is displayed to the console.
This example is for the server process, which uses the NamedPipeServerStream class. For the entire code example, including the code for both the pipe client and server, see How to: Use Named Pipes for Network Interprocess Communication.
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
Remarks
Named pipes provide one-way or duplex pipes for communication between a pipe server and one or more pipe clients. Named pipes can be used for interprocess communication locally or over a network. A single pipe name can be shared by multiple NamedPipeClientStream objects.
Any process can act as either a named pipe server or client, or both.
Constructors
NamedPipeServerStream(PipeDirection, Boolean, Boolean, SafePipeHandle) |
Initializes a new instance of the NamedPipeServerStream class from the specified pipe handle. |
NamedPipeServerStream(String) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name. |
NamedPipeServerStream(String, PipeDirection) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name and pipe direction. |
NamedPipeServerStream(String, PipeDirection, Int32) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name, pipe direction, and maximum number of server instances. |
NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name, pipe direction, maximum number of server instances, and transmission mode. |
NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name, pipe direction, maximum number of server instances, transmission mode, and pipe options. |
NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name, pipe direction, maximum number of server instances, transmission mode, pipe options, and recommended in and out buffer sizes. |
NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name, pipe direction, maximum number of server instances, transmission mode, pipe options, recommended in and out buffer sizes, and pipe security. |
NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity, HandleInheritability) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name, pipe direction, maximum number of server instances, transmission mode, pipe options, recommended in and out buffer sizes, pipe security, and inheritability mode. |
NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity, HandleInheritability, PipeAccessRights) |
Initializes a new instance of the NamedPipeServerStream class with the specified pipe name, pipe direction, maximum number of server instances, transmission mode, pipe options, recommended in and out buffer sizes, pipe security, inheritability mode, and pipe access rights. |
Fields
MaxAllowedServerInstances |
Represents the maximum number of server instances that the system resources allow. |
Properties
CanRead |
Gets a value indicating whether the current stream supports read operations. (Inherited from PipeStream) |
CanSeek |
Gets a value indicating whether the current stream supports seek operations. (Inherited from PipeStream) |
CanTimeout |
Gets a value that determines whether the current stream can time out. (Inherited from Stream) |
CanWrite |
Gets a value indicating whether the current stream supports write operations. (Inherited from PipeStream) |
InBufferSize |
Gets the size, in bytes, of the inbound buffer for a pipe. (Inherited from PipeStream) |
IsAsync |
Gets a value indicating whether a PipeStream object was opened asynchronously or synchronously. (Inherited from PipeStream) |
IsConnected |
Gets or sets a value indicating whether a PipeStream object is connected. (Inherited from PipeStream) |
IsHandleExposed |
Gets a value indicating whether a handle to a PipeStream object is exposed. (Inherited from PipeStream) |
IsMessageComplete |
Gets a value indicating whether there is more data in the message returned from the most recent read operation. (Inherited from PipeStream) |
Length |
Gets the length of a stream, in bytes. (Inherited from PipeStream) |
OutBufferSize |
Gets the size, in bytes, of the outbound buffer for a pipe. (Inherited from PipeStream) |
Position |
Gets or sets the current position of the current stream. (Inherited from PipeStream) |
ReadMode |
Gets or sets the reading mode for a PipeStream object. (Inherited from PipeStream) |
ReadTimeout |
Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out. (Inherited from Stream) |
SafePipeHandle |
Gets the safe handle for the local end of the pipe that the current PipeStream object encapsulates. (Inherited from PipeStream) |
TransmissionMode |
Gets the pipe transmission mode supported by the current pipe. (Inherited from PipeStream) |
WriteTimeout |
Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out. (Inherited from Stream) |
Methods
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Begins an asynchronous read operation. (Inherited from PipeStream) |
BeginWaitForConnection(AsyncCallback, Object) |
Begins an asynchronous operation to wait for a client to connect. |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Begins an asynchronous write operation. (Inherited from PipeStream) |
CheckPipePropertyOperations() |
Verifies that the pipe is in a proper state for getting or setting properties. (Inherited from PipeStream) |
CheckReadOperations() |
Verifies that the pipe is in a connected state for read operations. (Inherited from PipeStream) |
CheckWriteOperations() |
Verifies that the pipe is in a connected state for write operations. (Inherited from PipeStream) |
Close() |
Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Instead of calling this method, ensure that the stream is properly disposed. (Inherited from Stream) |
CopyTo(Stream) |
Reads the bytes from the current stream and writes them to another stream. Both streams positions are advanced by the number of bytes copied. (Inherited from Stream) |
CopyTo(Stream, Int32) |
Reads the bytes from the current stream and writes them to another stream, using a specified buffer size. Both streams positions are advanced by the number of bytes copied. (Inherited from Stream) |
CopyToAsync(Stream) |
Asynchronously reads the bytes from the current stream and writes them to another stream. Both streams positions are advanced by the number of bytes copied. (Inherited from Stream) |
CopyToAsync(Stream, CancellationToken) |
Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token. Both streams positions are advanced by the number of bytes copied. (Inherited from Stream) |
CopyToAsync(Stream, Int32) |
Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size. Both streams positions are advanced by the number of bytes copied. (Inherited from Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token. Both streams positions are advanced by the number of bytes copied. (Inherited from Stream) |
CreateObjRef(Type) |
Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject) |
CreateWaitHandle() |
Obsolete.
Obsolete.
Obsolete.
Allocates a WaitHandle object. (Inherited from Stream) |
Disconnect() |
Disconnects the current connection. |
Dispose() |
Releases all resources used by the Stream. (Inherited from Stream) |
Dispose(Boolean) |
Releases the unmanaged resources used by the PipeStream class and optionally releases the managed resources. (Inherited from PipeStream) |
DisposeAsync() |
Asynchronously releases the unmanaged resources used by the Stream. (Inherited from Stream) |
EndRead(IAsyncResult) |
Ends a pending asynchronous read request. (Inherited from PipeStream) |
EndWaitForConnection(IAsyncResult) |
Ends an asynchronous operation to wait for a client to connect. |
EndWrite(IAsyncResult) |
Ends a pending asynchronous write request. (Inherited from PipeStream) |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
Finalize() |
Releases unmanaged resources and performs other cleanup operations before the NamedPipeServerStream instance is reclaimed by garbage collection. |
Flush() |
Clears the buffer for the current stream and causes any buffered data to be written to the underlying device. (Inherited from PipeStream) |
FlushAsync() |
Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device. (Inherited from Stream) |
FlushAsync(CancellationToken) |
Asynchronously clears the buffer for the current stream and causes any buffered data to be written to the underlying device. (Inherited from PipeStream) |
GetAccessControl() |
Gets a PipeSecurity object that encapsulates the access control list (ACL) entries for the pipe described by the current PipeStream object. (Inherited from PipeStream) |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetImpersonationUserName() |
Gets the user name of the client on the other end of the pipe. |
GetLifetimeService() |
Obsolete.
Retrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Initializes a PipeStream object from the specified SafePipeHandle object. (Inherited from PipeStream) |
InitializeLifetimeService() |
Obsolete.
Obtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
MemberwiseClone(Boolean) |
Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject) |
ObjectInvariant() |
Obsolete.
Provides support for a Contract. (Inherited from Stream) |
Read(Byte[], Int32, Int32) |
Reads a block of bytes from a stream and writes the data to a specified buffer starting at a specified position for a specified length. (Inherited from PipeStream) |
Read(Span<Byte>) |
Reads a sequence of bytes from the current stream, writes them to a byte array, and advances the position within the stream by the number of bytes read. (Inherited from PipeStream) |
ReadAsync(Byte[], Int32, Int32) |
Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. (Inherited from Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronously reads a sequence of bytes from the current stream to a byte array starting at a specified position for a specified number of bytes, advances the position within the stream by the number of bytes read, and monitors cancellation requests. (Inherited from PipeStream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Asynchronously reads a sequence of bytes from the current stream, writes them to a byte memory range, advances the position within the stream by the number of bytes read, and monitors cancellation requests. (Inherited from PipeStream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Reads at least a minimum number of bytes from the current stream and advances the position within the stream by the number of bytes read. (Inherited from Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Asynchronously reads at least a minimum number of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests. (Inherited from Stream) |
ReadByte() |
Reads a byte from a pipe. (Inherited from PipeStream) |
ReadExactly(Byte[], Int32, Int32) |
Reads |
ReadExactly(Span<Byte>) |
Reads bytes from the current stream and advances the position within the stream until the |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronously reads |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Asynchronously reads bytes from the current stream, advances the position within the stream until the |
RunAsClient(PipeStreamImpersonationWorker) |
Calls a delegate while impersonating the client. |
Seek(Int64, SeekOrigin) |
Sets the current position of the current stream to the specified value. (Inherited from PipeStream) |
SetAccessControl(PipeSecurity) |
Applies the access control list (ACL) entries specified by a PipeSecurity object to the pipe specified by the current PipeStream object. (Inherited from PipeStream) |
SetLength(Int64) |
Sets the length of the current stream to the specified value. (Inherited from PipeStream) |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
WaitForConnection() |
Waits for a client to connect to this NamedPipeServerStream object. |
WaitForConnectionAsync() |
Asynchronously waits for a client to connect to this NamedPipeServerStream object. |
WaitForConnectionAsync(CancellationToken) |
Asynchronously waits for a client to connect to this NamedPipeServerStream object and monitors cancellation requests. |
WaitForPipeDrain() |
Waits for the other end of the pipe to read all sent bytes. (Inherited from PipeStream) |
Write(Byte[], Int32, Int32) |
Writes a block of bytes to the current stream using data from a buffer. (Inherited from PipeStream) |
Write(ReadOnlySpan<Byte>) |
Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. (Inherited from PipeStream) |
WriteAsync(Byte[], Int32, Int32) |
Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. (Inherited from Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronously writes a specified number of bytes from a byte array starting at a specified position, advances the current position within this stream by the number of bytes written, and monitors cancellation requests. (Inherited from PipeStream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests. (Inherited from PipeStream) |
WriteByte(Byte) |
Writes a byte to the current stream. (Inherited from PipeStream) |
Extension Methods
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Asynchronously reads the bytes from the Stream and writes them to the specified PipeWriter, using a cancellation token. |
GetAccessControl(PipeStream) |
Returns the security information of a pipe stream. |
SetAccessControl(PipeStream, PipeSecurity) |
Changes the security attributes of an existing pipe stream. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Configures how awaits on the tasks returned from an async disposable will be performed. |