AnonymousPipeServerStream Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Hem zaman uyumlu hem de zaman uyumsuz okuma ve yazma işlemlerini destekleyen anonim kanalın etrafındaki bir akışı kullanıma sunar.
public ref class AnonymousPipeServerStream sealed : System::IO::Pipes::PipeStream
public sealed class AnonymousPipeServerStream : System.IO.Pipes.PipeStream
type AnonymousPipeServerStream = class
inherit PipeStream
Public NotInheritable Class AnonymousPipeServerStream
Inherits PipeStream
- Devralma
- Devralma
Örnekler
Aşağıdaki örnek, anonim kanallar kullanarak bir üst işlemden alt işleme bir dize gönderir. Bu örnek, üst işlemde değeriyle PipeDirection.Outbir PipeDirection nesne oluştururAnonymousPipeServerStream. Ayrıca bir alt işlemde değeriyle PipeDirection.Inbir PipeDirection nesnesi oluştururAnonymousPipeClientStream. Ardından ana işlem, alt işleme kullanıcı tarafından sağlanan bir dize gönderir. Dize konsolda görüntülenir.
Bu örnek, sınıfını kullanan sunucu işlemine yöneliktir AnonymousPipeServerStream . Hem kanal istemcisinin hem de sunucunun kodu da dahil olmak üzere kod örneğinin tamamı için bkz . Nasıl yapılır: Yerel İşlemler Arası İletişim için Anonim Kanallar Kullanma.
//<snippet01>
#using <System.dll>
#using <System.Core.dll>
using namespace System;
using namespace System::IO;
using namespace System::IO::Pipes;
using namespace System::Diagnostics;
ref class PipeServer
{
public:
static void Main()
{
Process^ pipeClient = gcnew Process();
pipeClient->StartInfo->FileName = "pipeClient.exe";
AnonymousPipeServerStream^ pipeServer =
gcnew AnonymousPipeServerStream(PipeDirection::Out,
HandleInheritability::Inheritable);
Console::WriteLine("[SERVER] Current TransmissionMode: {0}.",
pipeServer->TransmissionMode);
// Pass the client process a handle to the server.
pipeClient->StartInfo->Arguments =
pipeServer->GetClientHandleAsString();
pipeClient->StartInfo->UseShellExecute = false;
pipeClient->Start();
pipeServer->DisposeLocalCopyOfClientHandle();
try
{
// Read user input and send that to the client process.
StreamWriter^ sw = gcnew StreamWriter(pipeServer);
sw->AutoFlush = true;
// Send a 'sync message' and wait for client to receive it.
sw->WriteLine("SYNC");
pipeServer->WaitForPipeDrain();
// Send the console input to the client process.
Console::Write("[SERVER] Enter text: ");
sw->WriteLine(Console::ReadLine());
sw->Close();
}
// Catch the IOException that is raised if the pipe is broken
// or disconnected.
catch (IOException^ e)
{
Console::WriteLine("[SERVER] Error: {0}", e->Message);
}
pipeServer->Close();
pipeClient->WaitForExit();
pipeClient->Close();
Console::WriteLine("[SERVER] Client quit. Server terminating.");
}
};
int main()
{
PipeServer::Main();
}
//</snippet01>
//<snippet01>
using System;
using System.IO;
using System.IO.Pipes;
using System.Diagnostics;
class PipeServer
{
static void Main()
{
Process pipeClient = new Process();
pipeClient.StartInfo.FileName = "pipeClient.exe";
using (AnonymousPipeServerStream pipeServer =
new AnonymousPipeServerStream(PipeDirection.Out,
HandleInheritability.Inheritable))
{
Console.WriteLine("[SERVER] Current TransmissionMode: {0}.",
pipeServer.TransmissionMode);
// Pass the client process a handle to the server.
pipeClient.StartInfo.Arguments =
pipeServer.GetClientHandleAsString();
pipeClient.StartInfo.UseShellExecute = false;
pipeClient.Start();
pipeServer.DisposeLocalCopyOfClientHandle();
try
{
// Read user input and send that to the client process.
using (StreamWriter sw = new StreamWriter(pipeServer))
{
sw.AutoFlush = true;
// Send a 'sync message' and wait for client to receive it.
sw.WriteLine("SYNC");
pipeServer.WaitForPipeDrain();
// Send the console input to the client process.
Console.Write("[SERVER] Enter text: ");
sw.WriteLine(Console.ReadLine());
}
}
// Catch the IOException that is raised if the pipe is broken
// or disconnected.
catch (IOException e)
{
Console.WriteLine("[SERVER] Error: {0}", e.Message);
}
}
pipeClient.WaitForExit();
pipeClient.Close();
Console.WriteLine("[SERVER] Client quit. Server terminating.");
}
}
//</snippet01>
'<snippet01>
Imports System.IO
Imports System.IO.Pipes
Imports System.Diagnostics
Class PipeServer
Shared Sub Main()
Dim pipeClient As New Process()
pipeClient.StartInfo.FileName = "pipeClient.exe"
Using pipeServer As New AnonymousPipeServerStream(PipeDirection.Out, _
HandleInheritability.Inheritable)
Console.WriteLine("[SERVER] Current TransmissionMode: {0}.",
pipeServer.TransmissionMode)
' Pass the client process a handle to the server.
pipeClient.StartInfo.Arguments = pipeServer.GetClientHandleAsString()
pipeClient.StartInfo.UseShellExecute = false
pipeClient.Start()
pipeServer.DisposeLocalCopyOfClientHandle()
Try
' Read user input and send that to the client process.
Using sw As New StreamWriter(pipeServer)
sw.AutoFlush = true
' Send a 'sync message' and wait for client to receive it.
sw.WriteLine("SYNC")
pipeServer.WaitForPipeDrain()
' Send the console input to the client process.
Console.Write("[SERVER] Enter text: ")
sw.WriteLine(Console.ReadLine())
End Using
Catch e As IOException
' Catch the IOException that is raised if the pipe is broken
' or disconnected.
Console.WriteLine("[SERVER] Error: {0}", e.Message)
End Try
End Using
pipeClient.WaitForExit()
pipeClient.Close()
Console.WriteLine("[SERVER] Client quit. Server terminating.")
End Sub
End Class
'</snippet01>
Açıklamalar
Anonim kanallar, alt ve üst işlemler arasında güvenli ve güvenli işlemler arası iletişim sağlamaya yardımcı olur. sınıfı, AnonymousPipeServerStream üst işlemin bir alt işlemden bilgi göndermesini veya almasını sağlar.
Anonim kanallar, genellikle üst ve alt işlemler arasında veri aktaran adsız, tek yönlü kanallardır. Anonim kanallar her zaman yereldir; ağ üzerinden kullanılamazlar. PipeDirection Anonim kanallar tek yönlü olarak tanımlandığından değeri InOut desteklenmez.
Anonim kanallar okuma modunu desteklemez PipeTransmissionMode.Message .
Anonim kanalın istemci tarafı, yöntemi çağrılarak sunucu tarafından sağlanan bir kanal tutamacından GetClientHandleAsString oluşturulmalıdır. Dize daha sonra istemci işlemi oluşturulurken parametre olarak geçirilir. İstemci işleminden, oluşturucuya AnonymousPipeClientStream parametresi olarak pipeHandleAsString
geçirilir.
AnonymousPipeServerStream nesnesi, istemci çıktığında bildirim almak için yöntemini kullanarak DisposeLocalCopyOfClientHandle istemci tanıtıcısını atmalıdır.
Oluşturucular
AnonymousPipeServerStream() |
AnonymousPipeServerStream sınıfının yeni bir örneğini başlatır. |
AnonymousPipeServerStream(PipeDirection) |
Belirtilen kanal yönüyle sınıfının yeni bir örneğini AnonymousPipeServerStream başlatır. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
Belirtilen kanal yönü ve devralınabilirlik moduyla sınıfının yeni bir örneğini AnonymousPipeServerStream başlatır. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
Belirtilen kanal yönü, devralınabilirlik modu ve arabellek boyutu ile sınıfının yeni bir örneğini AnonymousPipeServerStream başlatır. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
Belirtilen kanal yönü, devralınabilirlik modu, arabellek boyutu ve kanal güvenliği ile sınıfının yeni bir örneğini AnonymousPipeServerStream başlatır. |
AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
Belirtilen kanal tanıtıcılarından sınıfının yeni bir örneğini AnonymousPipeServerStream başlatır. |
Özellikler
CanRead |
Geçerli akışın okuma işlemlerini destekleyip desteklemediğini belirten bir değer alır. (Devralındığı yer: PipeStream) |
CanSeek |
Geçerli akışın arama işlemlerini destekleyip desteklemediğini belirten bir değer alır. (Devralındığı yer: PipeStream) |
CanTimeout |
Geçerli akışın zaman aşımına neden olup olmadığını belirleyen bir değer alır. (Devralındığı yer: Stream) |
CanWrite |
Geçerli akışın yazma işlemlerini destekleyip desteklemediğini belirten bir değer alır. (Devralındığı yer: PipeStream) |
ClientSafePipeHandle |
Şu anda nesneye bağlı olan nesne için AnonymousPipeClientStream güvenli tanıtıcıyı AnonymousPipeServerStream alır. |
InBufferSize |
Bir kanal için gelen arabelleğin boyutunu bayt cinsinden alır. (Devralındığı yer: PipeStream) |
IsAsync |
Bir nesnenin zaman uyumsuz olarak mı yoksa zaman uyumlu olarak mı açıldığını belirten bir PipeStream değer alır. (Devralındığı yer: PipeStream) |
IsConnected |
Nesnenin bağlı olup olmadığını belirten bir PipeStream değer alır veya ayarlar. (Devralındığı yer: PipeStream) |
IsHandleExposed |
Nesne tanıtıcının kullanıma sunulduğunu belirten bir PipeStream değer alır. (Devralındığı yer: PipeStream) |
IsMessageComplete |
İletide en son okuma işleminden döndürülen daha fazla veri olup olmadığını belirten bir değer alır. (Devralındığı yer: PipeStream) |
Length |
Bir akışın uzunluğunu bayt cinsinden alır. (Devralındığı yer: PipeStream) |
OutBufferSize |
Bir kanal için giden arabelleğin boyutunu bayt cinsinden alır. (Devralındığı yer: PipeStream) |
Position |
Geçerli akışın geçerli konumunu alır veya ayarlar. (Devralındığı yer: PipeStream) |
ReadMode |
Nesne için AnonymousPipeServerStream okuma modunu ayarlar. Anonim kanallar için iletim modu olmalıdır Byte. |
ReadTimeout |
Akışın zaman aşımına uğramadan önce ne kadar süreyle okumayı deneyeceğini belirleyen bir değeri milisaniye cinsinden alır veya ayarlar. (Devralındığı yer: Stream) |
SafePipeHandle |
Geçerli PipeStream nesnenin kapsüllediğini borunun yerel ucu için güvenli tutamacı alır. (Devralındığı yer: PipeStream) |
TransmissionMode |
Geçerli boru tarafından desteklenen boru iletim modunu alır. |
WriteTimeout |
Akışın zaman aşımına uğramadan önce ne kadar süreyle yazmaya çalışacağını belirleyen bir değeri milisaniye cinsinden alır veya ayarlar. (Devralındığı yer: Stream) |
Yöntemler
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Zaman uyumsuz bir okuma işlemi başlatır. (Devralındığı yer: PipeStream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Zaman uyumsuz bir yazma işlemi başlatır. (Devralındığı yer: PipeStream) |
CheckPipePropertyOperations() |
Kanalın özellikleri almak veya ayarlamak için uygun durumda olduğunu doğrular. (Devralındığı yer: PipeStream) |
CheckReadOperations() |
Borunun okuma işlemleri için bağlı durumda olduğunu doğrular. (Devralındığı yer: PipeStream) |
CheckWriteOperations() |
Kanalın yazma işlemleri için bağlı durumda olduğunu doğrular. (Devralındığı yer: PipeStream) |
Close() |
Geçerli akışı kapatır ve geçerli akışla ilişkili tüm kaynakları (yuvalar ve dosya tanıtıcıları gibi) serbest bırakır. Bu yöntemi çağırmak yerine akışın düzgün bir şekilde atıldığından emin olun. (Devralındığı yer: Stream) |
CopyTo(Stream) |
Geçerli akıştan baytları okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyTo(Stream, Int32) |
Geçerli akıştan baytları okur ve belirtilen arabellek boyutunu kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream) |
Geçerli akıştan gelen baytları zaman uyumsuz olarak okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream, CancellationToken) |
Geçerli akıştan gelen baytları zaman uyumsuz olarak okur ve belirtilen iptal belirtecini kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream, Int32) |
Geçerli akıştan baytları zaman uyumsuz olarak okur ve belirtilen arabellek boyutunu kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Geçerli akıştan baytları zaman uyumsuz olarak okur ve belirtilen arabellek boyutu ve iptal belirtecini kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CreateObjRef(Type) |
Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur. (Devralındığı yer: MarshalByRefObject) |
CreateWaitHandle() |
Geçersiz.
Geçersiz.
Geçersiz.
Bir WaitHandle nesne ayırır. (Devralındığı yer: Stream) |
Dispose() |
Stream tarafından kullanılan tüm kaynakları serbest bırakır. (Devralındığı yer: Stream) |
Dispose(Boolean) |
sınıfı tarafından PipeStream kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları serbest bırakır. (Devralındığı yer: PipeStream) |
DisposeAsync() |
tarafından Streamkullanılan yönetilmeyen kaynakları zaman uyumsuz olarak serbest bırakır. (Devralındığı yer: Stream) |
DisposeLocalCopyOfClientHandle() |
Nesne tanıtıcısının AnonymousPipeClientStream yerel kopyasını kapatır. |
EndRead(IAsyncResult) |
Bekleyen zaman uyumsuz okuma isteğini sonlandırır. (Devralındığı yer: PipeStream) |
EndWrite(IAsyncResult) |
Bekleyen zaman uyumsuz yazma isteğini sonlandırır. (Devralındığı yer: PipeStream) |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
Finalize() |
Yönetilmeyen kaynakları serbest bırakır ve örnek çöp toplama tarafından geri kazanılmadan önce AnonymousPipeServerStream diğer temizleme işlemlerini gerçekleştirir. |
Flush() |
Geçerli akış için arabelleği temizler ve arabelleğe alınan verilerin temel alınan cihaza yazılmasına neden olur. (Devralındığı yer: PipeStream) |
FlushAsync() |
Bu akış için tüm arabellekleri zaman uyumsuz olarak temizler ve arabelleğe alınan verilerin temel alınan cihaza yazılmasına neden olur. (Devralındığı yer: Stream) |
FlushAsync(CancellationToken) |
Geçerli akış için arabelleği zaman uyumsuz olarak temizler ve arabelleğe alınan verilerin temel alınan cihaza yazılmasına neden olur. (Devralındığı yer: PipeStream) |
GetAccessControl() |
PipeSecurity Geçerli PipeStream nesne tarafından açıklanan kanal için erişim denetimi listesi (ACL) girdilerini kapsülleyen bir nesne alır. (Devralındığı yer: PipeStream) |
GetClientHandleAsString() |
Bağlı AnonymousPipeClientStream nesnenin tanıtıcısını dize olarak alır. |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetLifetimeService() |
Geçersiz.
Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır. (Devralındığı yer: MarshalByRefObject) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Belirtilen SafePipeHandle nesneden bir PipeStream nesne başlatır. (Devralındığı yer: PipeStream) |
InitializeLifetimeService() |
Geçersiz.
Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır. (Devralındığı yer: MarshalByRefObject) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
MemberwiseClone(Boolean) |
Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur. (Devralındığı yer: MarshalByRefObject) |
ObjectInvariant() |
Geçersiz.
için Contractdestek sağlar. (Devralındığı yer: Stream) |
Read(Byte[], Int32, Int32) |
Bir akıştan bir bayt bloğu okur ve verileri belirtilen bir uzunlukta belirtilen konumdan başlayarak belirtilen arabelleğe yazar. (Devralındığı yer: PipeStream) |
Read(Span<Byte>) |
Geçerli akıştan bir bayt dizisi okur, bunları bir bayt dizisine yazar ve okunan bayt sayısı kadar akış içindeki konumu ilerletir. (Devralındığı yer: PipeStream) |
ReadAsync(Byte[], Int32, Int32) |
Geçerli akıştaki bayt dizisini zaman uyumsuz olarak okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir. (Devralındığı yer: Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Belirtilen sayıda bayt için belirtilen konumdan başlayarak geçerli akıştan bayt dizisine zaman uyumsuz olarak bir bayt dizisi okur, okunan bayt sayısı kadar akış içindeki konumu ilerletir ve iptal isteklerini izler. (Devralındığı yer: PipeStream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Geçerli akıştan zaman uyumsuz olarak bir bayt dizisi okur, bunları bir bayt bellek aralığına yazar, okunan bayt sayısına göre akış içindeki konumu ilerletir ve iptal isteklerini izler. (Devralındığı yer: PipeStream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Geçerli akıştan en az bayt sayısını okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir. (Devralındığı yer: Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Geçerli akıştan en az en az sayıda bayt zaman uyumsuz olarak okur, okunan bayt sayısı kadar akış içindeki konumu ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
ReadByte() |
Borudan bayt okur. (Devralındığı yer: PipeStream) |
ReadExactly(Byte[], Int32, Int32) |
|
ReadExactly(Span<Byte>) |
Geçerli akıştan baytları okur ve doldurulana kadar |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Geçerli akıştaki bayt sayısını zaman uyumsuz olarak okur |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Geçerli akıştaki baytları zaman uyumsuz olarak okur, doldurulana kadar |
Seek(Int64, SeekOrigin) |
Geçerli akışın geçerli konumunu belirtilen değere ayarlar. (Devralındığı yer: PipeStream) |
SetAccessControl(PipeSecurity) |
Bir PipeSecurity nesne tarafından belirtilen erişim denetim listesi (ACL) girdilerini geçerli PipeStream nesne tarafından belirtilen kanala uygular. (Devralındığı yer: PipeStream) |
SetLength(Int64) |
Geçerli akışın uzunluğunu belirtilen değere ayarlar. (Devralındığı yer: PipeStream) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
WaitForPipeDrain() |
Kanalın diğer ucunun gönderilen tüm baytları okumasını bekler. (Devralındığı yer: PipeStream) |
Write(Byte[], Int32, Int32) |
Arabellekten alınan verileri kullanarak geçerli akışa bir bayt bloğu yazar. (Devralındığı yer: PipeStream) |
Write(ReadOnlySpan<Byte>) |
Geçerli akışa bir bayt dizisi yazar ve bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir. (Devralındığı yer: PipeStream) |
WriteAsync(Byte[], Int32, Int32) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar ve bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir. (Devralındığı yer: Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Belirtilen konumdan başlayan bir bayt dizisinden zaman uyumsuz olarak belirtilen sayıda bayt yazar, bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir ve iptal isteklerini izler. (Devralındığı yer: PipeStream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar, bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir ve iptal isteklerini izler. (Devralındığı yer: PipeStream) |
WriteByte(Byte) |
Geçerli akışa bir bayt yazar. (Devralındığı yer: PipeStream) |
Uzantı Metotları
CopyToAsync(Stream, PipeWriter, CancellationToken) |
baytlarını Stream zaman uyumsuz olarak okur ve bir iptal belirteci kullanarak belirtilen PipeWriteröğesine yazar. |
GetAccessControl(PipeStream) |
Kanal akışının güvenlik bilgilerini döndürür. |
SetAccessControl(PipeStream, PipeSecurity) |
Mevcut kanal akışının güvenlik özniteliklerini değiştirir. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Zaman uyumsuz bir atılabilir öğeden döndürülen görevlerde awaits işleminin nasıl gerçekleştirildiğini yapılandırılır. |
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin