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

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);

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.


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

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.


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(); 
 }

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();
        }
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.