使用Process执行TerrariaServer的坑
当服务器控制台需要我输入的时候,我使用ServerProcess!.StandardInput.WriteLine(index);怎么输都没用。一开始使用ServerProcess.StandardOutput.ReadLine();读取控制台读取不到Choose World: ,因为在泰拉源码中,这一行以及后面的输入提示,都是使用的Write不是WriteLine所以需要一个字符一个字符读,或者等待输入。
后面我改用了ServerProcess.StandardOutput.Read(@char, 0, 1);自己去一个字符一个字符读取,Choose World: 也输出了,但是我怎么输入都就是没用,AI也问烂了,deepseek ,通义,copilot 回答的结果都是一样的。让我用OutputDataReceived事件,然后调用BeginOutputReadLine,不是,我都说了泰拉输出使用的Write,这样不也照样阻塞吗,更何况根本不是阻塞的问题。
解决: 设置ProcessStartInfo的StandardInputEncoding = Encoding.Unicode 默认的也不行,默认UTF8 我一开始就是用的UTF8卡我两个小时。
|
|