java windows named-pipes

¿Cómo abrir una tubería con nombre de Windows desde Java?



named-pipes (5)

En Windows, existen pipes con nombre , pero no se pueden crear como archivos en un sistema de archivos grabable y no hay una herramienta de línea de comandos. Viven en un sistema de archivos especial y solo se pueden crear utilizando la API de Win32.

Parece que tendrá que recurrir al código nativo, o cambiar de tuberías a enchufes para IPC, probablemente la mejor solución a largo plazo, ya que es mucho más portátil.

En nuestro sistema Linux utilizamos pipes con nombre para la comunicación entre procesos (un productor y un consumidor).

Para probar el código de consumidor (Java), me gustaría implementar (en Java) un productor ficticio que escribe en una tubería con nombre que está conectada al consumidor.

Ahora la prueba también debería funcionar en el entorno de desarrollo de Windows. Por lo tanto, me gustaría saber cómo crear un conducto con nombre en Windows desde Java. En Linux puedo usar mkfifo (llamado usando Runtime.exec() ), pero ¿cómo debo hacer esto en Windows?



Puede crear un conducto con nombre utilizando la biblioteca JNA https://github.com/java-native-access/jna

Se muestra claramente en la siguiente prueba: JNA

API de JNA wrapper es lo mismo que Win32, por lo tanto, podrás usar todas las características y potencia de named pipes en Windows.


tal vez podría usar pipes named cygwin, si todos sus procesos son cygwin.


Use Canalizaciones con nombre para comunicarse entre Java y procesos .Net

Parte relevante en el enlace

try { // Connect to the pipe RandomAccessFile pipe = new RandomAccessFile("////.//pipe//testpipe", "rw"); String echoText = "Hello word/n"; // write to pipe pipe.write ( echoText.getBytes() ); // read response String echoResponse = pipe.readLine(); System.out.println("Response: " + echoResponse ); pipe.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }