voldemort Geschrieben 25. November 2012 Geschrieben 25. November 2012 (bearbeitet) 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 25. November 2012 von voldemort Zitieren
Schiller256 Geschrieben 25. November 2012 Geschrieben 25. November 2012 (bearbeitet) 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 25. November 2012 von Schiller256 Zitieren
uenetz Geschrieben 26. November 2012 Geschrieben 26. November 2012 Soll hier ein nslookup auf die IP-Adresse gemacht werden ? Wenn ja, denn hier ein Link zur Ansicht. Zitieren
voldemort Geschrieben 26. November 2012 Autor Geschrieben 26. November 2012 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 Zitieren
Schiller256 Geschrieben 26. November 2012 Geschrieben 26. November 2012 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]; } Zitieren
voldemort Geschrieben 26. November 2012 Autor Geschrieben 26. November 2012 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ß Zitieren
Gast runtimeterror Geschrieben 26. November 2012 Geschrieben 26. November 2012 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 Zitieren
Empfohlene Beiträge
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.