Как заставить мою Java-программу взаимодействовать с процессом, который она делает через System.in System.out - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь создать игру для программирования ИИ, где мой игровой движок отправит состояние игры в другую Java-программу в виде строки, а затем подождет до 2 секунд, чтобы получить еще одну строку, содержащую информацию ход, который программа хочет сделать.

Однако у меня проблемы с установлением постоянной связи между двумя программами. Я могу отправить информацию, затем получить информацию, но тогда процесс просто останавливается. Любой совет?

Код пользователя должен сообщаться через System.in и System.out, но то, что я делаю на стороне движка, может быть любым.

public class Main{
public static void main(String[] args) throws IOException, InterruptedException{
    Runtime rt = Runtime.getRuntime();
    Process compileOne = rt.exec("javac PlayerOne/Main.java");
    TimeUnit.SECONDS.sleep(1);
    System.out.println("Compiled");
    Process process = rt.exec("java PlayerOne/Main");
    OutputStream stdin = process.getOutputStream(); // <- Eh?
    InputStream stdout = process.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
    while(true){
        writer.write("SENDING TO CHILD \n");
        writer.flush();
        String line;
        while((line = reader.readLine()) != null) {
            System.out.println("RECEIVED: " + line);
        }
    }
}
}

public class Main{
public static void main(String[] args) throws Exception{
    System.out.println("SENDING TO OG PROCESS");
    Random r = new Random();
    Scanner console = new Scanner(System.in);
    while(true){
        String received = console.nextLine();
        System.out.println("CHILD RECEIVED: " + received);
        System.out.println(r.nextInt());
    }
}
}

Но вот мой вывод:

Compiled
RECEIVED: SENDING TO OG PROCESS
RECEIVED: CHILD RECEIVED: SENDING TO CHILD
RECEIVED: -800346246
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...