Ich habe die IP-Adresse des DNS-Servers und einen Hostnamen.
Wie kann ich unter Verwendung von Java die IP-Adresse des von diesem DNS-Server zurückgegebenen Hostnamens anhand der IP-Adresse und des Hostnamens ermitteln?
Wie mache ich dasselbe im Java-Code und wo soll ich die IP-Adresse und den Hostnamen des DNS-Servers verwenden?
Dunkle Materie
Bei einer anderen Abfrage müssen wir auf jeden Fall die DNS-Server-IP-Adresse angeben oder versuchen, diese standardmäßig zu finden. Ich bin hier etwas verwirrt, ob wir auch nur den Hostnamen oder den Hostnamen + die DNS-Server-IP-Adresse verwenden müssen.
Dunkle Materie
1
Die Suche nach der Adresse unter Verwendung des Namens ist nicht kompliziert. Solange Sie nur den Standard-Resolver des Systems verwenden. Also: Müssen Sie wirklich die DNS-Serveradresse verwenden?
AH
Ich habe die gleiche Frage: Benötige ich wirklich eine DNS-Serveradresse oder wird die Adresse standardmäßig aufgelöst? Übrigens verwende ich einen AIX Unix-Server.
Sagen Sie, wenn ich eine DNS-IP-Adresse 10.37.221.152 habe und ein Hostname "www.student.com" sagt, wie kann ich dann die IP-Adresse finden.
Dunkle Materie
3
@DarkMatter: InetAddresssollte die DNS-aufgelöste Adresse erhalten, wenn Sie danach fragen getHostAddress(). Ich bin mir nicht sicher, ob Sie die Verwendung eines bestimmten DNS-Servers erzwingen können .
Thegrinner
Es muss sich also idealerweise von selbst auflösen, ohne dass der Programmierer die DNS-Serveradresse explizit angibt, oder?
Dunkle Materie
1
@ DarkMatter Ja. Ich glaube, es verwendet jeden DNS-Server, der auf dem Computer selbst eingestellt ist.
Wie von allen oben genannten vorgeschlagen, können Sie verwenden,
InetAddress.getByName("hostName")aber dies kann Ihnen eine zwischengespeicherte IP geben. Lesen Sie die Java-Dokumentation für die gleiche. Wenn Sie eine IP von DNS erhalten möchten, können Sie Folgendes verwenden:
Zusätzlich zu dem, was @daksh hervorgehoben hat, können Sie den DNS-Antwortcache wie hier vorgeschlagen deaktivieren. Beachten Sie jedoch den Zeitpunkt des Deaktivierens des Caches sowie das Zwischenspeichern von DNS-Antworten, die von Ihrem Betriebssystem sowie anderen DNS-Servern wie hier vorgeschlagen erstellt wurden . Hoffe das hilft
CrazyGreenHand
Aus irgendeinem Grund gibt mir dieser Aufruf ein positives Ergebnis für jeden Hostnamen. Ich dachte, ich verwende standardmäßig meine IP, aber nein, es gibt mir eine bestimmte IP für einen unbekannten Host.
dig <hostname>
in einer Kommandozeile?Antworten:
Schauen Sie sich
InetAddress
diegetHostAddress()
Methode an.quelle
InetAddress
sollte die DNS-aufgelöste Adresse erhalten, wenn Sie danach fragengetHostAddress()
. Ich bin mir nicht sicher, ob Sie die Verwendung eines bestimmten DNS-Servers erzwingen können .Sie können es so machen:
quelle
Hierfür können Sie InetAddress verwenden. Versuchen Sie den folgenden Code,
quelle
Wie von allen oben genannten vorgeschlagen, können Sie verwenden,
InetAddress.getByName("hostName")
aber dies kann Ihnen eine zwischengespeicherte IP geben. Lesen Sie die Java-Dokumentation für die gleiche. Wenn Sie eine IP von DNS erhalten möchten, können Sie Folgendes verwenden:quelle