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-jar
(STW
应用程序)和 Winform
应用程序之间使用 stdin/out IPC
的方法.
答案已链接到解决方案 I made。
要读取和写入应用程序,您可以使用以下方法:WriteLine
和 OutputDataReceived
(Process
方法,see this class)。
在 Java
进程中,您使用 Scanner
读取和 Println
写入。(this is the java class)
通信是通过字符串进行的。您可以将对象序列化为 json 然后传递它们。(使用 Json.net
和 Gson
)
我需要向我的 Web 应用程序添加一项服务,它从命令行打开一个 java 进程并通过该 jvm 线程的 input/output 流进行通信,而不是使用 IDL 或套接字或数据库或文件.进程之间有没有这种联系,很接近纯java?
C# 网络服务器打开 helloworld.jar 并将 1M 字节写入它的控制台 (console.in),然后等待 console.out。我读过命令行参数不能超过千字节级别。如果有这样的通信,也许流可以达到兆字节?
仅使用字符串进行通信是可以的,但使用对象本身会更好。
在 executiable-jar
(STW
应用程序)和 Winform
应用程序之间使用 stdin/out IPC
的方法.
答案已链接到解决方案 I made。
要读取和写入应用程序,您可以使用以下方法:WriteLine
和 OutputDataReceived
(Process
方法,see this class)。
在 Java
进程中,您使用 Scanner
读取和 Println
写入。(this is the java class)
通信是通过字符串进行的。您可以将对象序列化为 json 然后传递它们。(使用 Json.net
和 Gson
)