Estoy utilizando Java en Windows XP y deseo poder enviar comandos a otro programa como telnet. No quiero simplemente ejecutar otro programa. Quiero ejecutarlo y luego enviar una secuencia de comandos una vez que se está ejecutando. Aquí está mi código de lo que quiero hacer, pero no funciona: (Si descomenta y cambia el comando a "cmd" funciona como se esperaba. Ayuda por favor) Este es un ejemplo simplificado. En producción, se enviarán muchos más comandos, así que por favor no sugiera llamar a "telnet localhost".En Java, envíe comandos a otro programa de línea de comandos
try
{
Runtime rt = Runtime.getRuntime();
String command = "telnet";
//command = "cmd";
Process pr = rt.exec(command);
BufferedReader processOutput = new BufferedReader(new InputStreamReader(pr.getInputStream()));
BufferedWriter processInput = new BufferedWriter(new OutputStreamWriter(pr.getOutputStream()));
String commandToSend = "open localhost\n";
//commandToSend = "dir\n" + "exit\n";
processInput.write(commandToSend);
processInput.flush();
int lineCounter = 0;
while(true)
{
String line = processOutput.readLine();
if(line == null) break;
System.out.println(++lineCounter + ": " + line);
}
processInput.close();
processOutput.close();
pr.waitFor();
}
catch(Exception x)
{
x.printStackTrace();
}
¿Desea una solución de comunicación entre procesos para Java? – Justin
Me parece que telnet está escribiendo su salida a algo que no sea el flujo de entrada del proceso, y Java no lo está capturando. ¿Es Process.getInputStream() el único método para leer lo que está produciendo un proceso? – bradvido