Ich habe die folgende Frage für alle Java-Experten da draußen.Java InetAddress Name Auflösung
Ich versuche, eine zuverlässige Möglichkeit zur Erstellung eines LocalHost InetAddress -Objekts als Ausweichmöglichkeit zu InetAddress.getLocalHost()
zu finden.
Ich bin vor das folgende Problem:
Es gibt Fälle, in denen meine Java-Anwendung aufgrund nicht auf eine Unknown geworfen, falls von ihm läuft die Netzwerkverbindung der Maschine beginnen würde, ist nach unten (Bereitstellung auf Windows-Rechnern).
Also bisher meine Ideen sind die folgenden:
1) Entweder versuchen den lokalen Host InetAddress Objekt aus der Netzwerkschnitt Enumeration zu bekommen (was ich ein wenig umständlich zu finden).
2) Versuchen Sie, die lokale Hostnamen-Zeichenfolge über die Systemumgebung abzurufen, und versuchen Sie dann, ein InetAddress-Objekt zu erstellen, indem Sie InetAddress.getByName()
ausführen.
Ich bevorzuge den zweiten Ansatz, wie es viel einfacher und scheint ein bisschen schlanker, aber ich bekomme immer noch Probleme bekommen das InetAddress-Objekt, das ich will, falls die Netzwerkverbindung ist unten.
Nun meine Fragen, sind zwei:
1) In Anbetracht der Tatsache, dass ich eine Host-Datei innerhalb der genannten Maschine erhalten, die den Eintritt der Maschine enthält (Hostname - IP-Adresse) wäre es möglich, nicht für # 2 wie beabsichtigt zu arbeiten? Ich weiß, dass die DNS-Auflösung schließlich zu dem tatsächlichen Betriebssystem kommen wird, aber sollte Windows nicht in der Lage sein, ihre Hosts-Datei dazu zu verwenden, selbst wenn keine Netzwerkverbindung verfügbar war.
2) Ist es möglich, ein InetAddress-Objekt mit dem Hostnamen einer Maschine zu erstellen, aber ohne dass diese Maschine eine aktive Netzwerkverbindung hat - die Schnittstelle ist ausgefallen (wodurch die zuvor erwähnte UnkownHostException vermieden wird)?