Frage

Was ist der richtige Weg, eine Named Pipe in C # über ein Netzwerk einrichten?

Zur Zeit habe ich zwei Maschinen, 'Client' und 'Server'.

Server setzt seine Pfeife in der folgenden Weise auf:

NamedPipeServerStream pipeServer = new NamedPipeServerStream(
    "pipe",
    PipeDirection.InOut,
    10,
    PipeTransmissionMode.Byte,
    PipeOptions.None)
pipeServer.WaitForConnection();
//... Read some data from the pipe

Der Client stellt die Verbindung auf folgende Weise auf:

NamedPipeClientStream pipeClient = new NamedPipeClientStream(
    "server",
    "pipe",
    PipeDirection.InOut);
pipeClient.Connect(); //This line throws an exception
//... Write some data to the pipe

Die ‚Server‘ Maschine im Netzwerk zugegriffen werden kann, indem Sie auf „\\ server“.

Jedes Mal, wenn ich das Programm laufen lasse, erhalte ich eine System.UnauthorizedAccessException, der sagt „Zugriff auf den Pfad verweigert.“ Der Code funktioniert gut, wenn ich den Server und Client auf meinem lokalen Rechner und versucht, laufen zu verbinden „“ mit dem Kunden.

War es hilfreich?

Lösung

Es ist nicht möglich Named Pipes zwischen Maschinen verwendet wird.

"Der WCF-NetNamedPipe Adapter bietet prozessübergreifende Kommunikation auf dem demselben Computer "

http://msdn.microsoft.com/en-us/library /bb226493.aspx

Andere Tipps

Sie müssen Berechtigungen für den NamedPipeServerStream so einzustellen, dass die Client-Berechtigungen haben das Rohr zuzugreifen.

I am SetAccessControl Methode Ihrer NamedPipeServerStream aussehen würde.

Suchen Sie im System.Runtime.Remoting Namespace. IIRC, Named Pipes sind eine Option für das Protokoll von Remoting-Kanäle verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top