Verwendung von getByName

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verwendung von getByName

    Hallo,
    Ich habe folgendes Problem. Ich möchte eine Methode schreiben, mit der ich Hostnamen zu den dazugehörigen Ip-Addressen auflösen kann und diese in ein Array schreiben.

    Prinzipiell habe ich es geschafft eine funktionierende methode zu schreiben. Allerdings funktioniert diese seltsamerweise nur in meiner main-Methode(wo sie nichts zu suchen hat).

    Ok hier erstmal der Code:

    Quellcode

    1. public static String retrieveIp(String strHost, String strDomain) {
    2. InetAddress inet = null;
    3. String strIP ="";
    4. try {
    5. inet = InetAddress.getByName(strHost + "." + strDomain);
    6. } catch (UnknownHostException e) {
    7. e.printStackTrace();
    8. }
    9. strIP = inet.toString();
    10. return(strIP);
    11. }
    Alles anzeigen

    -> wird in einer Schleife immer wieder aufgerufen, aber es werden unterschiedliche Strings übergeben, zBsp.:
    String strHost: mein PC-Name(phoenix)
    String strDomain: Domain-Name.de(pt.ag)

    Wenn ich

    Quellcode

    1. InetAddress inet = null;
    2. String strIP ="";
    3. try {
    4. inet = InetAddress.getByName(strHost + "." + strDomain);
    5. } catch (UnknownHostException e) {
    6. e.printStackTrace();
    7. }
    8. strIP = inet.toString();
    9. return(strIP);
    10. }


    in meine Main-Methode einsetze funktioniert alles wie gewünscht.
    Könnt ihr mir bitte helfen meinen Denkfehler zu finden?

    Gruß Insire
  • An der Methode gibts nichts auszusetzen.
    Evtl. ginge es auch kürzer:

    Quellcode

    1. public static String retrieveIp (final String strHost, final String strDomain) {
    2. try {
    3. return InetAddress.getByName (strHost + "." + strDomain).toString ();
    4. }
    5. catch (final UnknownHostException e) {
    6. e.printStackTrace ();
    7. return "";
    8. }
    9. }


    Was ist denn das genaue Problem?
    There's no place like 127.0.0.1
  • das problem war, das ich jedesmal eine exception bekam, die besagte der eingefügte string entspricht nicht dengeforderten kriterien.....

    vlt lag es daran das am anfang <strHost> Strings noch ein leerzeichen war, ka vlt prüfe ich das später nochmal.....bin allerdings die Aktion jetzt anders angegangen:

    ich lasse mir jetzt über nslookup der windows kommandozeile die ip ausgeben.....dazu musste ich zwar nen bissl parsen, aber das ist mindestens genauso performant(wenn nicht sogar schneller als die ping abfrage->bei timeout )

    hier mal der code für meine abfrage:

    Quellcode

    1. public static String retrieveIp(String strHost) {
    2. String strIP = "";
    3. String line = null;
    4. Process Prcss;
    5. ProcessBuilder b = new ProcessBuilder();
    6. b.command("nslookup", strHost);
    7. b.redirectErrorStream(true);
    8. try {
    9. Prcss = b.start();
    10. BufferedReader r = new BufferedReader(new InputStreamReader(Prcss.getInputStream()));
    11. while ((line = r.readLine()) != null) {
    12. if (x == 1) {
    13. if (line.indexOf("Addresses:") >= 0) {
    14. line = line.substring(line.indexOf("Address:") + 13,line.length());
    15. if (strIP.equals("")) {
    16. strIP = strIP + "," + line.toString();
    17. } else {
    18. strIP = line.toString();
    19. }
    20. x = 0;
    21. } else {
    22. line = line.substring(line.indexOf("Address:") + 10,line.length());
    23. if (strIP.equals("")) {
    24. strIP = strIP + "," + line.toString();
    25. } else {
    26. strIP = line.toString();
    27. }
    28. x = 0;
    29. }
    30. }
    31. if (line.indexOf(strHost + ".") >= 0) {
    32. x = 1;
    33. } else {
    34. if (line.indexOf("*** " + strHost) >= 0) {
    35. if (strIP.equals("")) {
    36. strIP = "Non-existent domain";
    37. } else {
    38. strIP = strIP + "," + "Non-existent domain";
    39. }
    40. }
    41. }
    42. }
    43. } catch (IOException e) {
    44. e.printStackTrace();
    45. }
    46. return (strIP);
    47. }
    Alles anzeigen


    verbesserungsvorschläge immer erwünscht :D

    Gruß Insire
  • Und welche Exception kam genau?
    Der Aufruf von der Methode die ich in der Kurzfassung gepastet habe funktioniert tadellos!

    Quellcode

    1. retrieveIp ("google", "com")
    liefert "google.com/209.85.148.99"

    Wo ist das Problem? Hast du die Methode falsch aufgerufen? Hängst du hinter einem Proxy Server? Hast du eine restriktive Firewall/Internet Security Suite installiert?
    There's no place like 127.0.0.1