InetAddress-Objekt in Java erstellen

81

Ich versuche, eine Adresse, die durch eine IP-Nummer oder einen Namen in String (dh localhostoder 127.0.0.1) angegeben ist, in ein InetAdress- Objekt zu konvertieren . Es gibt keinen Konstruktor, sondern statische Methoden, die eine InetAddress zurückgeben . Wenn ich also einen Hostnamen bekomme, ist das kein Problem, aber was ist, wenn ich die IP-Nummer bekomme? Es gibt eine Methode, die Byte [] erhält, aber ich bin mir nicht sicher, wie mir das helfen kann. Alle anderen Methoden erhalten den Hostnamen.

InetAddress API-Dokumentation

Yotamoo
quelle

Antworten:

133

Sie sollten in der Lage sein, getByName oder getByAddress zu verwenden .

Der Hostname kann entweder ein Computername wie "java.sun.com" oder eine Textdarstellung seiner IP-Adresse sein

InetAddress addr = InetAddress.getByName("127.0.0.1");

Die Methode, die ein Byte-Array verwendet, kann folgendermaßen verwendet werden:

byte[] ipAddr = new byte[]{127, 0, 0, 1};
InetAddress addr = InetAddress.getByAddress(ipAddr);
Bala R.
quelle
3
Was machst du, wenn du Zahlen größer als 127 hast? Zum Beispiel IP 192.168.0.1. Maskierst du int mit 0xFF? Oder Sie haben nur int in Byte umgewandelt?
Matej Kormuth
@MatejKormuth Ich denke, das Maskieren mit 0xFF sollte funktionieren.
Bala R
1
@ matej-kormuth Sie können es auch ausdrücken, wie Inet4AddressImpl tut:byte[] loopback = {0x7f,0x00,0x00,0x01};
Carlos Ferreyra
"Der Standardkonstruktor kann den vom impliziten Superkonstruktor ausgelösten Ausnahmetyp UnknownHostException nicht verarbeiten. Er muss einen expliziten Konstruktor definieren"
Schütze
Hilft, die InetAddress-Erstellung in eine try / catch-Anweisung einzuschließen.
Matthew Redmond
9

Aus der API für InetAddress

Der Hostname kann entweder ein Computername wie "java.sun.com" oder eine Textdarstellung seiner IP-Adresse sein. Wenn eine Literal-IP-Adresse angegeben wird, wird nur die Gültigkeit des Adressformats überprüft.

Karakuricoder
quelle
7
ip = InetAddress.getByAddress(new byte[] {
        (byte)192, (byte)168, (byte)0, (byte)102}
);
Musa
quelle
3

InetAddress.getByName funktioniert auch für die IP-Adresse.

Aus dem JavaDoc

Der Hostname kann entweder ein Computername wie "java.sun.com" oder eine Textdarstellung seiner IP-Adresse sein. Wenn eine Literal-IP-Adresse angegeben wird, wird nur die Gültigkeit des Adressformats überprüft.

kliu
quelle
3

Die API ist ziemlich einfach zu bedienen.

// Lookup the dns, if the ip exists.
 if (!ip.isEmpty()) {
     InetAddress inetAddress = InetAddress.getByName(ip);
     dns = inetAddress.getCanonicalHostName(); 
 }
Rechnung
quelle
0

Dies ist ein Projekt zum Abrufen der IP-Adresse einer Website. Es ist nützlich und so einfach zu erstellen.

import java.net.InetAddress;
import java.net.UnkownHostExceptiin;

public class Main{
    public static void main(String[]args){
        try{
            InetAddress addr = InetAddresd.getByName("www.yahoo.com");
            System.out.println(addr.getHostAddress());

          }catch(UnknownHostException e){
             e.printStrackTrace();
        }
    }
}
Fridjato Teil Fridjat
quelle