2012-06-08 9 views
5

Creo un servidor de canalización con nombre con mi aplicación .NET, y su nombre es "TSPipe". Luego abro el Bloc de notas e intento guardar el archivo en "\. \ Pipe \ TSPipe". Luego quiero poder leer lo que el bloc de notas escribió en esa tubería.En Windows, ¿Puedo usar Canalizaciones con nombre como archivos?

Todavía estoy trabajando fuera de la lógica general para el hilo que se encarga de la NamedPipeServerStream, pero aquí está mi código para el servidor de canalización con nombre:

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

Gracias de antemano por cualquier ayuda, pero te dejaré saber si alguna de las sugerencias ayuda!

Respuesta

2

No puede escribir en un conducto con nombre desde el bloc de notas. Con su código, cuando intento escribir en \\\\.\pipe\TSPipe, el bloc de notas lo corrige automáticamente en la ruta UNC \\\\pipe\TSPipe. Intenté un par de otras aplicaciones y tampoco funcionaron. Parece que ejecutan alguna lógica que no sea simplemente pasar el nombre escrito en CreateFile.

Sin embargo, ejecutar algo así como echo Hello, Word! > \\\\.\pipe\TSPipe enviará el texto Hello, World! a su servidor de pipa.

Así que supongo que la respuesta a la pregunta "En Windows, ¿Puedo usar Canalizaciones con nombre como archivos?" es a veces.

+0

Ok, gracias. Esto responde mi pregunta. Creo que tendré que encontrar otra forma de hacer IPC. – Tim

+2

¿Enviaría ese texto? No funciona para mi (Win7, elevado 'cmd') –

Cuestiones relacionadas