Zum Inhalt springen

GUI mit Swing -> Wenn IP eingegeben Domain ausgeben


voldemort

Empfohlene Beiträge

Hallo zusammen,

ich sitze da gerade an einem Problem.

Ich habe eine GUI programmiert welche mir eine IP Adresse ausgibt, sobald ich per IP Button den Befehl dazu gebe. Nun möchte ich es genau andersrum programmieren. Also wenn ich eine IP Adresse eingebe und dann den Domain Button drücke, möchte ich gern die Domain ausgegeben haben.

Ausgegeben wird alles auf einem JTextArea und aufrufen tu ich das mit meiner Methode:


public JTextArea getTa()

	{

		return ta;

	}

Es wurde folgendes vorgehen vorgegeben:

- IP Adresse in vier Teilbereiche (4 Strings) spalten

- Static Methode getByAddress(..) verwenden welcher ein Bytearray übergeben wird

- 4 Stringobjekte in int Werte wandeln und nach byte casten

- vorher noch überprüfen ob die int Werte >127 sind, dann noch 255 davon abziehen

Mein Problem: Ich habe versucht mit split zu arbeiten, aber dieses ist mir leider nicht gelungen. Parallel meinte ein Kollege das er es auch nicht geschafft hat.

Habt ihr vielleicht Tipps oder Vorschläge?

Grüße

Voldemort

Bearbeitet von voldemort
Link zu diesem Kommentar
Auf anderen Seiten teilen

Was ist dir bei split nicht gelungen? Du solltest dir mal die Doku zur Methode split anschauen.

Denn der Wert den du dort übergibst wird als RegEx ausgewertet. Der Punkt wird in RegEx aber etwas anders interpretiert. Also musst du ihn vorher noch escapen.


public static void main(String[] args) {

	for (String element : "192.168.178.1".split("\\."))

	{

		System.out.println(element);

	}

}

Bearbeitet von Schiller256
Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke, habe mir die Doku nochmal angeschaut und ein bisschen gewerkt:


private Aufgabe fenster;
private String text;
private String[] test;
private Integer [] array;

public MyListener(Aufgabe gui)
{
fenster=gui;
}

else if (e.getActionCommand() == "Domain")
{
text = fenster.getTf().getText();

test = text.split("\\.");

for(int i=0;i<test.length+1;i++)
{
array[i]=Integer.parseInt(test[i]);
}
}
[/PHP]

Beim ausführen dieses Codes bekomm ich eine NullPointerException auf die Zeile array[i]=Integer.parseInt(test[i]);

Wo liegt hier das Problem?

@uenetz: Das Programm soll wirklich nur jeweils die IP und die Domain per Eingabe und Buttonklick erfolgen

Danke bis hierhin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Beim ausführen dieses Codes bekomm ich eine NullPointerException auf die Zeile array=Integer.parseInt(test);

Wo liegt hier das Problem?

Das liegt daran das dein Array null ist. Du musst erst angeben wie groß dein Array sein soll.



//dein Code

private Integer[] array;


//Alternative 1

private Integer[] array = new Integer[4];


//Alternative 2

private Integer[] array;


public void deineMethode()

{

  array = new Integer[4];

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für den Tipp.

Habe nun einige Fehler beseitigt, aber es gibt nun Probleme bei dem Part mit der Ausgabe des Domainnamens. Gebe ich eine IP Adresse ein und möchte die Domain angezeigt haben, bekomme ich in meiner GUI aber wieder die IP ausgegeben


private Aufgabe fenster;
private static InetAddress iptodom;
private Integer [] array = new Integer [4];
private String[] test;
private byte[] bycast = new byte [4];


public MyListener(Aufgabe gui)
{
fenster=gui;
}

else if (e.getActionCommand() == "Domain")
{
text = fenster.getTf().getText();
test = text.split("\\.");

for(int i=0;i<test.length;i++)
{
array[i]=Integer.parseInt(test[i]);
if (array[i] > 127)
{
array[i] = array[i] - 256;
}


bycast[i] = array[i].byteValue();
}

try
{
InetAddress iptodom= InetAddress.getByAddress(bycast);
fenster.getTa().append("Domainname zu "+text+" " +iptodom.getHostName()+"\n");
}

catch (UnknownHostException e1)
{
fenster.getTa().setText("Ungültige Domain");
}
}
[/PHP]

Sieht jemand den Fehler und gibt es Verbesserungsvorschläge?

Danke und Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast runtimeterror

Hi,

ich würde dich bitten öfters mal einen Blick in die offiziellen Dokumentationen zu werfen, einige Fragen werden dort sehr gut beantwortet:

InetAddress (Java Platform SE 7 )

Falls es dennoch Probleme gibt, kannst du dir natürlich gerne helfen lassen.

Was den cast-Teil angeht noch eine Anmerkung.

array[i]=Integer.parseInt(test[i]); 

if (array[i] > 127) {

    array[i] = array[i] - 256;

}

bycast[i] = array[i].byteValue();
Das sollte sich auf folgenden äquivalenten Code reduzieren lassen:
bycast[i] = (byte) Integer.parseInt(test[i]);
Oder um Boxing-Warnings zu umgehen:
bycast[i] = (byte) (int) Integer.parseInt(test[i]);

Was an Java besonders gemein ist: erst wenn man fast fertig ist, erzählt dir jemand "das gibt's schon fertig" :)

Folgender Methode kann man auch einfach die IP als String übergeben.

InetAddress (Java Platform SE 7 )

Das Programm ist dennoch eine sinnvolle Übung.

Gruß,

Kai

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...