首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Java打开Windows命名管道?

如何从Java打开Windows命名管道?
EN

Stack Overflow用户
提问于 2009-03-11 13:42:08
回答 5查看 42.4K关注 0票数 28

在我们的Linux系统上,我们使用命名管道进行进程间通信(生产者和消费者)。

为了测试消费者(Java)代码,我想(用Java)实现一个虚拟生产者,它向连接到消费者的命名管道写入数据。

现在,测试应该还可以在Windows开发环境中工作。因此,我想知道如何在Windows中从Java创建命名管道。在Linux中我可以使用mkfifo (称为使用Runtime.exec() ),但在Windows上该如何操作呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-09 16:04:08

Use Named Pipes to Communicate Between Java and .Net Processes

链接中的相关部分

代码语言:javascript
运行
复制
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();
}
票数 26
EN

Stack Overflow用户

发布于 2009-03-11 13:55:35

在windows中,named pipes exist,但是它们是cannot be created as files in a writeable filesystem,并且没有命令行工具。它们位于一个特殊的文件系统中,并且只能使用Win32应用编程接口创建。

看起来你将不得不求助于原生代码,或者为IPC从管道转换为套接字-这可能是最好的长期解决方案,因为它更容易移植。

票数 10
EN

Stack Overflow用户

发布于 2018-01-08 19:14:50

可以使用JNA库https://github.com/java-native-access/jna创建命名管道。

下面的测试清楚地显示了这一点:https://github.com/java-native-access/jna/blob/master/contrib/platform/test/com/sun/jna/platform/win32/Kernel32NamedPipeTest.java

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/634564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档