2012-06-08 8 views
5

Ich erstelle einen Named Pipe Server mit meiner .NET App, und sein Name ist "TSPipe". Ich öffne dann den Editor und versuche, die Datei in "\. \ Pipe \ TSPipe" zu speichern. Ich möchte dann lesen können, welcher Notizblock zu dieser Pfeife geschrieben hat.Kann ich unter Windows Named Pipes As Files verwenden?

Ich bin immer noch die allgemeine Logik für den Thread ausarbeitet, die die NamedPipeServerStream Griffe, aber hier ist mein Code für das Named Pipes-Server:

public void PipeThread() { 
     var sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null); 
     var rule = new PipeAccessRule(sid, PipeAccessRights.ReadWrite, AccessControlType.Allow); 
     var sec = new PipeSecurity(); 

     sec.AddAccessRule(rule); 

     while (continuePipeThread) { 
      pipeStream = new NamedPipeServerStream("TSPipe", PipeDirection.In, 100, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0, sec); 

      Program.Output.PrintLine("Waiting for connection..."); 

      pipeStream.WaitForConnection(); 

      Program.Output.PrintLine("Connected, reading..."); 

      byte[] data = new byte[1024]; 
      int lenRead = 0; 
      lenRead = pipeStream.Read(data, 0, data.Length); 
      string line = System.Text.Encoding.ASCII.GetString(data, 0, lenRead); 

      Program.Output.PrintLine(line); 

      pipeStream.Close(); 
      pipeStream.Dispose(); 
     } 
    } 

Vielen Dank im Voraus für jede Hilfe, aber ich werde Sie lassen wissen, ob einige der Vorschläge helfen!

Antwort

2

Sie können nicht aus Notizblock in eine benannte Pipe schreiben. Mit meinem Code, wenn ich versuche, in \\\\.\pipe\TSPipe Notizblock zu schreiben, korrigiert es automatisch den UNC-Pfad \\\\pipe\TSPipe. Ich habe ein paar andere Anwendungen ausprobiert und sie haben auch nicht funktioniert. Es scheint, dass sie eine andere Logik als nur die Eingabe des eingegebenen Namens in CreateFile ausführen.

Allerdings wird so etwas wie echo Hello, Word! > \\\\.\pipe\TSPipe den Text Hello, World! an Ihren Pipe-Server senden.

So denke ich die Antwort auf die Frage "Unter Windows kann ich Named Pipes als Dateien verwenden?" ist manchmal.

+0

Ok, danke. Dies beantwortet meine Frage. Ich denke, ich muss einen anderen Weg finden, IPC zu machen. – Tim

+2

Wird es diesen Text senden? Es funktioniert nicht für mich. (Win7, erhöhte 'cmd') –