8

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

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

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

4

2 回答 2

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
于 2017-04-07T16:23:09.143 回答
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 上使用命名管道的所有功能和功能。

于 2018-05-16T06:04:14.840 回答