Java可以充当命名管道服务器吗?

时间:2013-08-08 20:53:26

标签: java windows named-pipes

我知道Java可以作为读/写命名管道的客户端,但我需要另一个充当服务器的程序。

在这种情况下,我正在与之通信的程序必须充当客户端,而不是服务器。 Java是否可以在服务器模式下对命名管道进行操作?

编辑:在命名管道(Windows)中有客户端和服务器模式。必须首先建立服务器,然后客户端才能连接到该服务器。我有一个遗留应用程序充当“客户端”,这意味着它连接到它假设的已经建立的命名管道。 我有一个新的java应用程序,我希望使用命名管道与这个遗留应用程序进行通信。我只找到了如何使用Java命名管道连接到以前建立的命名管道的示例。

2 个答案:

答案 0 :(得分:1)

在linux和mac上,你总是可以让java一次一行地向控制台发出一行信息。例如:

在一个终端窗口中:

 mkfifo myPipe
 java -jar mydataserver.jar > mkfifo

在第二个终端窗口中执行以下操作:

 while read line; do echo "What has been passed through the pipe is \
 ${line}"; done<myPipe

答案 1 :(得分:1)

是的,您可以使用JNA库https://github.com/java-native-access/jna

在Java服务器上创建命名管道

以下测试清楚地显示:https://github.com/java-native-access/jna/blob/master/contrib/platform/test/com/sun/jna/platform/win32/Kernel32NamedPipeTest.java

JNA包装器的API与Win32相同,因此您将能够在Windows上使用命名管道的所有功能和强大功能。