Wie zu verwenden java-Programm ausführen, Eingabeaufforderung Befehle?

dies ist mein Erster posting hier, also ich bin nicht wirklich sicher, was zu sagen/Fragen.
Wie auch immer, bin ich versucht zu machen, ein einfaches java-Programm, das läuft-Eingabeaufforderung Befehle aus der java-Programm, hauptsächlich für die ping-Flut (ping flooding mich).

Hier ist meine aktuelle code

public class Core extends JFrame {

JTextField ipTextField;

int packets = 0;

boolean running = false;

public Core() {
    super("Fatique");

    Container container = getContentPane();
    JButton bAttack = new JButton("Start Attack");
    JButton bStop = new JButton("Stop Attack");
    JPanel jPanel = new JPanel();

    container.setLayout(new FlowLayout());
    ipTextField = new JTextField("IP Address", 30);
    container.add(ipTextField);

    bAttack.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            String input = ipTextField.getText();
            String[] value = input.split(":");

            int amountOfPackets = Integer.parseInt(value[1]);

            exec("cmd /c" + input + " -t -n " + amountOfPackets);
            running = true;
        }
    });

    bStop.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            stop();
        }
    });

    if(!running) {
        jPanel.add(bAttack);
    } else {
        jPanel.add(bStop);
    }

    add(jPanel);
}  

public void exec(String cmd) {
    try {
        Process p = Runtime.getRuntime().exec(cmd);
        System.out.println(getOutput(p) + " - " + getPacketsSent());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public String getOutput(Process p) {
    String output = null;

    try {
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = null;
        while ((line = in.readLine()) != null) {
            output = line;
            packets++;
        }

        return output;
    } catch (IOException e) {
        System.err.println(e.getStackTrace());
    }

    return null;
}

public int getPacketsSent() {
    return packets;
}

public void stop() {
    exec("cmd /c break");
    running = false;
}

public static void main(String[] args) {  
    Core c = new Core();
    c.setSize(500, 300);
    c.setVisible(true);
    c.setResizable(false);
    c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    c.setLocationRelativeTo(null);
}

Ich bin ganz neu in java, also das könnte nicht tun, was ich will, es zu tun.
Was ich will, es zu tun ist, ich geben Sie eine ip-Adresse in das textfield-Objekt, und teilen Sie es mit ":", und nach, dass die Menge der Pakete, zum Beispiel

127.0.0.1:100

Aber wenn ich jetzt versuche zu nutzen, dass die ip-und Paket-Menge, es gibt "null - 0" (aus der exec-Methode), und ich bin mir auch nicht sicher, ob es irgendetwas im Zusammenhang zu pingen.

Was ich versuche zu erreichen ist, wie ich bereits sagte, ping-Flut selbst, und dann ausgeben, was bekomme ich als Antwort, aber ich habe keine Ahnung, ob dieser code funktioniert, was auch damit in Zusammenhang, ich benutze meistens die Logik beim Programmieren java.

 public String getOutput(Process p) {
    String output = null;

    try {
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = null;
        while ((line = in.readLine()) != null) {
            output = line;
            packets++;
        }

        return output;
    } catch (IOException e) {
        System.err.println(e.getStackTrace());
    }

    return null;
}

Könnte jemand mir erklären, warum mein code nicht funktioniert wie ich das will? Bitte Urteile nicht, wie ich schon sagte, ich bin ganz neu in der java-Programmierung.

EDIT: Hier ist eine schnelle "informativ" Erklärung von, was ich versuche zu erreichen.

  1. Ich die ip Adresse eingeben und wie viele Pakete ich schicken wollen. In dieser Erklärung, ich bin mit der localhost-ip, und 5 Pakete.
    Wie zu verwenden java-Programm ausführen, Eingabeaufforderung Befehle?
  2. Starte ich den Angriff. An dieser Stelle, ich möchte das Programm ausführen-cmd-Eingabeaufforderung den Befehl

    ping 127.0.0.1 -t -n 5

    127.0.0.1 für die ip, die ich in den textfield-Objekt in meinem Programm, und 5 ist die Menge der Pakete, die ich in den textfield.

  3. Ich begann den Angriff, so ist dies, was geschehen soll, in der Eingabeaufforderung:
    Wie zu verwenden java-Programm ausführen, Eingabeaufforderung Befehle?

    Die Sprache ist Finnisch, aber immer noch das gleiche.

    Dies ist die grundlegende Erklärung, was ich bin versucht zu erreichen, ich hoffe jemand verstanden und kann helfen/sagen warum mein code nicht funktioniert, oder funktioniert, aber drucken nicht die richtigen Zeilen in der eclipse-Konsole.

  • Drucken Sie die raw-Ausgabe des Prozess' input-stream.
  • Immer noch null, obwohl ich wahrscheinlich nicht tun, was Sie mir gesagt haben. System.aus.println(in.readLine()); Das ist, was ich versucht habe, jetzt gibt es "null-null - 1"
InformationsquelleAutor Woobie | 2013-04-06
Schreibe einen Kommentar