In Java, das senden von Befehlen an ein anderes Kommandozeilen-Programm

Bin ich mit Java auf Windows XP und wollen in der Lage sein, um Befehle zu senden, um ein anderes Programm wie telnet.
Ich möchte nicht einfach ein anderes Programm ausgeführt. Ich ausführen möchten, und dann senden Sie eine Folge von Befehlen, die, wenn es einmal läuft.
Hier ist mein code, was ich tun will, aber es funktioniert nicht:
(Wenn Sie das Kommentarzeichen, und ändern Sie den Befehl "cmd" funktioniert es wie erwartet. Bitte helfen Sie.)
Dies ist ein Vereinfachtes Beispiel. In der Produktion wird es viele weitere Befehle gesendet, so bitte nicht schlagen Aufruf von "telnet localhost".

    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();
    }
  • Sie wollen also eine inter-Prozess-Kommunikation-Lösung für java?
  • Es scheint mir, wie telnet schreibt seine Ausgabe auf etwas anderes als den Prozess-input-stream, und java ist nicht die Erfassung. Ist der Prozess.getInputStream() die einzige Methode, um zu Lesen, was ein Prozess ist die Ausgabe?
InformationsquelleAutor bradvido | 2010-05-20
Schreibe einen Kommentar