Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

GUI mit Swing -> Wenn IP eingegeben Domain ausgeben

Empfohlene Antworten

Veröffentlicht

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

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

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

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];

}

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ß

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.