2012-06-08 9 views
5

Tworzę serwer nazwany potok z moją aplikacją .NET, a jego nazwa to "TSPipe". Następnie otwieram Notatnik i próbuję zapisać plik w "\. \ Pipe \ TSPipe". Chcę wtedy móc przeczytać, co notatnik napisał do tej fajki.W systemie Windows mogę używać nazwanych potoków jako plików?

Wciąż pracuję z ogólną logikę do wątku, który obsługuje NamedPipeServerStream, ale tutaj jest mój kod na nazwie serwera rurze:

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(); 
     } 
    } 

Z góry dziękuję za wszelką pomoc, ale będę ci dać wiedzieć, czy któraś z sugestii pomaga!

Odpowiedz

2

Nie można pisać do nazwanego potoku z notatnika. Za pomocą twojego kodu, kiedy próbuję pisać do \\\\.\pipe\TSPipe notatnik automatycznie koryguje go do ścieżki UNC \\\\pipe\TSPipe. Próbowałem kilku innych aplikacji i one też nie działały. Wygląda na to, że działają one trochę inaczej, niż tylko wpisanie nazwy w CreateFile.

Jednak przy uruchomieniu czegoś w rodzaju echo Hello, Word! > \\\\.\pipe\TSPipe tekst o nazwie Hello, World! zostanie wysłany do serwera rur.

Więc domyślam się, że odpowiedź na pytanie "W systemie Windows, czy mogę używać nazwanych potoków jako plików?" jest czasami.

+0

OK, dziękuję. To odpowiada na moje pytanie. Chyba będę musiał znaleźć inny sposób na zrobienie IPC. – Tim

+2

Czy to wyśle ​​ten tekst? To nie działa dla mnie. (Win7, podniesione 'cmd') –