C # 3.5 - Connecting über Netzwerk Named Pipe
-
04-07-2019 - |
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.
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 "
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.