Wie verwende ich Java-Programm, um Befehle zur Eingabeaufforderung auszuführen?

8

Dies ist mein erstes Mal hier, also bin ich nicht wirklich sicher, was ich sagen / fragen soll. Wie auch immer, ich versuche, ein einfaches Java-Programm zu machen, das Befehlseingabeaufforderungen aus dem Java-Programm ausführt, die hauptsächlich für Ping-Flood verwendet werden (Ping-Flooding selbst).

Hier ist mein aktueller Code

%Vor%

Ich bin ziemlich neu in Java, also könnte das nicht tun, was ich will. Was ich will, ist, dass ich eine IP-Adresse in das Textfeld einfüge und sie mit ":" teile, und danach die Anzahl der Pakete, zum Beispiel

%Vor%

Obwohl ich jetzt versuche, diese IP- und Paketmenge zu verwenden, gibt es "null - 0" (von der exec-Methode) zurück, und ich bin mir nicht einmal sicher, ob es etwas mit ping zu tun hat.

Was ich versuche zu erreichen, ist, wie ich schon sagte, ping flute mich selbst, und dann ausgegeben, was ich als Antwort bekomme, obwohl ich keine Ahnung habe, ob dieser Code überhaupt etwas damit zu tun hat, verwende ich meistens Logik beim Programmieren von Java .

%Vor%

Könnte mir jemand erklären, warum meine Code-Code nicht funktioniert, wie ich will, dass es funktioniert? Bitte beurteile nicht, wie ich bereits sagte, ich bin ziemlich neu in der Java Programmierung.

EDIT: Hier ist eine kurze "informative" Erklärung dessen, was ich erreichen möchte.

  1. Ich gebe eine IP-Adresse ein und wie viele Pakete ich senden möchte. In dieser Erklärung verwende ich localhost ip und 5 Pakete.
  2. Ich beginne den Angriff. In diesem Teil möchte ich, dass das Programm den Befehl cmd prompt

    ausführt

    ping 127.0.0.1 -t -n 5

    127.0.0.1 ist die IP, die ich in das Textfeld in meinem Programm geschrieben habe, und 5 ist die Anzahl der Pakete, die ich in das Textfeld gebe.

  3. Ich habe den Angriff gestartet, das sollte in der Eingabeaufforderung geschehen:

    Die Sprache ist Finnisch, aber immer noch das Gleiche.

    Dies ist die grundlegende Erklärung dessen, was ich zu erreichen versuche, hoffentlich versteht jemand und kann helfen / sagen, warum mein Code nicht funktioniert, oder funktioniert, druckt aber nicht die richtigen Zeilen in der Eclipse-Konsole.

Woobie 06.04.2013, 14:32
quelle

3 Antworten

4

Es gibt ein Problem mit Ihrer getOutput-Methode. Es sieht so aus, als ob Sie beabsichtigen, jede Ausgabezeile zu sammeln. Da Sie jedoch line zu output zuweisen, geben Sie nur die letzte Zeile vor dem Ende des Streams zurück.

Um dies zu beheben, ändern Sie

%Vor%

bis

%Vor%

Oder um genauer zu sein:

%Vor%

wo Sie zuvor letzteres als:

deklariert haben %Vor%

Das erklärt nicht direkt, warum Sie null bekommen, aber das liegt vielleicht daran, dass der Befehl, den Sie ausführen, die Ausgabe in den 'Fehler' Stream statt in den 'Output' Stream schreibt.

    
Stephen C 06.04.2013 15:18
quelle
4

Versuchen Sie etwas wie folgt:

%Vor%

Dann müssen Sie die Variable out lesen, um die Ausgabe des Befehls ping kontinuierlich zu analysieren.

    
Pablo Santa Cruz 06.04.2013 14:34
quelle
0
%Vor%

Nur eine kleine Änderung Ihres Codes. Ausgabe erhalten ist als:

%Vor%

Hier ist die Ausgabe von JTextArea, die ich verwendet habe, um die Ausgabe des PING-Prozesses anzuzeigen. Ich kann Ihnen die Ausgabe nicht zeigen, weil mir der Ruf fehlt.

Ich weiß nicht, warum die erste Zeile null ist. Wie auch immer, es funktioniert.

Hoffe, das hilft dir. Viel Spaß beim Programmieren.

    
Rushi M Thakker 06.12.2014 10:58
quelle