Я пытаюсь создать игру для программирования ИИ, где мой игровой движок отправит состояние игры в другую 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