【问题标题】:Can Java act as a Named Pipes server?Java 可以充当命名管道服务器吗?
【发布时间】:2013-08-10 17:58:33
【问题描述】:

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

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

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

【问题讨论】:

  • 在哪个操作系统上?
  • 为什么这个问题被否决了?如果有什么问题,至少评论一下你投反对票的原因!
  • Java 在服务器模式下运行,请详细说明??无论如何,我不是反对者,但你会给你一个赞成票来平衡它吗:)
  • @RichieHindle Windows。
  • 是的,它可以,但问题是 API 是否已经存在。如果没有现有的支持,这可以通过 JNI 添加。

标签: java windows named-pipes


【解决方案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

【讨论】:

    【解决方案2】:

    是的,您可以使用 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 wrapper 的 API 与 Win32 相同,因此您将能够在 Windows 上使用命名管道的所有功能和功能。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2016-05-02
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多