C# 进程读取 java 进程的输出流而不使用套接字或 IDL/CORBA 或文件或数据库或 JNI

C# process to read a java process' outputstream without using sockets or IDL/CORBA or file or database or JNI

我需要向我的 Web 应用程序添加一项服务,它从命令行打开一个 java 进程并通过该 jvm 线程的 input/output 流进行通信,而不是使用 IDL 或套接字或数据库或文件.进程之间有没有这种联系,很接近纯java?

C# 网络服务器打开 helloworld.jar 并将 1M 字节写入它的控制台 (console.in),然后等待 console.out。我读过命令行参数不能超过千字节级别。如果有这样的通信,也许流可以达到兆字节?

仅使用字符串进行通信是可以的,但使用对象本身会更好。

回答中,我演示了在 executiable-jarSTW 应用程序)和 Winform 应用程序之间使用 stdin/out IPC 的方法.

答案已链接到解决方案 I made

要读取和写入应用程序,您可以使用以下方法:WriteLineOutputDataReceivedProcess 方法,see this class)。

Java 进程中,您使用 Scanner 读取和 Println 写入。(this is the java class)

通信是通过字符串进行的。您可以将对象序列化为 json 然后传递它们。(使用 Json.netGson