Phi*_*ipp 26 java windows named-pipes
在我们的Linux系统中,我们使用命名管道进行进程间通信(生产者和消费者).
为了测试使用者(Java)代码,我想实现(在Java中)一个虚拟生成器,它写入连接到使用者的命名管道.
现在,测试也应该在Windows开发环境中运行.因此,我想知道如何在Java中从Windows创建命名管道.在Linux中,我可以使用mkfifo(使用称为Runtime.exec()),但我应该如何在Windows上执行此操作?
小智 24
链接中的相关部分
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();
}
Run Code Online (Sandbox Code Playgroud)
在Windows中,存在命名管道,但它们不能在可写文件系统中创建为文件,也没有命令行工具.它们位于特殊的文件系统中,只能使用Win32 API创建.
看起来你将不得不求助于本机代码,或者从管道切换到IPC的套接字 - 可能是最好的长期解决方案,因为它更便携.
您可以使用 JNA 库创建命名管道https://github.com/java-native-access/jna
JNA 包装器的 API 与 Win32 相同,因此您将能够在 Windows 上使用命名管道的所有功能和功能。
| 归档时间: |
|
| 查看次数: |
35833 次 |
| 最近记录: |