C#重定向标准输入/错误

时间:2011-07-23 15:43:41

标签: c# .net process inputstream

我的应用程序用于启动Java进程并对其进行管理(如果崩溃,则重新启动它,提供tcp服务器以发出远程命令等)。使用我的RCON服务器(远程控制台),它工作正常。但是,当我将命令发送到Java进程时,我想接受回复(Java进程实际上在StandardError而不是StandardOutput中回复)并将响应显示给远程连接的人。

我的问题是因为他们的输入是通过我的RedirectedStandardInput函数发送的,我如何确保从RedirectedStandardOutput获得正确的回复?

最好的办法是拥有某种全局标志,这意味着“已发送RCON命令,通过标准错误接收的下一条消息应用于回复”?我想我的主要关注点是,Java进程是一个游戏,使用这种方法,它可能会拾取类似“玩家加入游戏”的内容,而不是实际上对命令的响应。对命令的响应在视觉上是即时的,但我不知道它是否只是有一点延迟。

1 个答案:

答案 0 :(得分:0)

这取决于Java应用程序的实现方式。但如果我们对此一无所知,我们必须假设它可以是多线程的。但这意味着,在您发送命令和响应之间,可能会出现不响应命令的消息。

如果是这种情况,您有几种解决方案:

  1. 如果您知道可能的消息,请解析它们以确定它是响应还是不相关的消息。
  2. 如果您可以更改Java应用程序,请对其进行更改,以便使用更好的协议进行通信。