{"id":324,"date":"2024-04-03T23:44:22","date_gmt":"2024-04-03T22:44:22","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=324"},"modified":"2024-04-30T23:49:07","modified_gmt":"2024-04-30T22:49:07","slug":"das-aufloesen-von-internet-adressen-in-java","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=324","title":{"rendered":"Das Aufl\u00f6sen von Internet-Adressen in Java"},"content":{"rendered":"\n<p>Das Aufl\u00f6sen von Internet-Adressen ist ein grundlegender Schritt in der Netzwerkprogrammierung, insbesondere in Java. Die InetAddress-API bietet verschiedene Methoden, um die Aufl\u00f6sung von Hostnamen in IP-Adressen und umgekehrt zu erm\u00f6glichen. In diesem Artikel werden wir die verschiedenen Methoden der InetAddress-API behandeln, einschlie\u00dflich der R\u00fcckw\u00e4rtsaufl\u00f6sung, und demonstrieren, wie eigene Resolver \u00fcber die InetAddressResolverProvider-Schnittstelle entwickelt und integriert werden k\u00f6nnen.<\/p>\n\n\n\n<p><strong>1. Die InetAddress-Klasse<\/strong><\/p>\n\n\n\n<p>Die InetAddress-Klasse in Java repr\u00e4sentiert eine Internet Protocol (IP)-Adresse. Sie bietet Methoden zum Aufl\u00f6sen von Hostnamen in IP-Adressen und umgekehrt. Um eine IP-Adresse zu erstellen, k\u00f6nnen wir die statische Methode <code>getByName()<\/code> verwenden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">InetAddress address = InetAddress.getByName(<span class=\"hljs-string\">\"www.example.com\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Diese Methode gibt eine InetAddress-Instanz zur\u00fcck, die die IP-Adresse von &#8222;www.example.com&#8220; darstellt. Wenn der Hostname nicht aufgel\u00f6st werden kann, wird eine UnknownHostException ausgel\u00f6st.<\/p>\n\n\n\n<p>Um den Hostnamen zu erhalten, k\u00f6nnen wir die Methode <code>getHostName()<\/code> verwenden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">String<\/span> hostname = address.getHostName();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Diese Methode gibt den Hostnamen zur\u00fcck, der dieser IP-Adresse zugeordnet ist.<\/p>\n\n\n\n<p><strong>2. Die InetAddressResolverProvider-Schnittstelle<\/strong><\/p>\n\n\n\n<p>Die InetAddressResolverProvider-Schnittstelle erm\u00f6glicht es Entwicklern, eigene Resolver zu implementieren und in die InetAddress-API zu integrieren. Ein Resolver ist verantwortlich f\u00fcr die Aufl\u00f6sung von Hostnamen in IP-Adressen und umgekehrt.<\/p>\n\n\n\n<p>Um einen eigenen Resolver zu implementieren, m\u00fcssen wir eine Klasse erstellen, die die InetAddressResolver-Schnittstelle implementiert:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">CustomResolverProvider<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">InetAddressResolverProvider<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> InetAddress&#91;] resolve(String hostname) throws UnknownHostException {\n        <span class=\"hljs-comment\">\/\/ Hier implementieren wir unseren eigenen Resolver-Code<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In der <code>resolve()<\/code>-Methode implementieren wir unseren eigenen Code zur Aufl\u00f6sung von Hostnamen. Diese Methode gibt ein Array von InetAddress-Objekten zur\u00fcck, die die aufgel\u00f6sten IP-Adressen darstellen.<\/p>\n\n\n\n<p>Um unseren eigenen Resolver in die InetAddress-API zu integrieren, m\u00fcssen wir eine Datei mit dem Namen <code>java.net.spi.InetAddressResolverProvider<\/code> im Verzeichnis <code>META-INF\/services<\/code> erstellen und den vollqualifizierten Namen unserer Resolver-Klasse darin angeben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">com<\/span><span class=\"hljs-selector-class\">.example<\/span><span class=\"hljs-selector-class\">.CustomResolverProvider<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Auf diese Weise wird unser Resolver bei der Verwendung der InetAddress-API automatisch verwendet.<\/p>\n\n\n\n<p><strong>3. R\u00fcckw\u00e4rtsaufl\u00f6sung<\/strong><\/p>\n\n\n\n<p>Die R\u00fcckw\u00e4rtsaufl\u00f6sung ist der Prozess, bei dem eine IP-Adresse in einen Hostnamen aufgel\u00f6st wird. Dies kann mit der Methode <code>getHostName()<\/code> der InetAddress-Klasse erreicht werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">InetAddress address = InetAddress.getByName(<span class=\"hljs-string\">\"192.0.2.1\"<\/span>);\n<span class=\"hljs-built_in\">String<\/span> hostname = address.getHostName();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Diese Methode gibt den Hostnamen zur\u00fcck, der dieser IP-Adresse zugeordnet ist. Beachten Sie, dass die R\u00fcckw\u00e4rtsaufl\u00f6sung m\u00f6glicherweise nicht immer erfolgreich ist, da nicht alle IP-Adressen einen g\u00fcltigen Hostnamen haben.<\/p>\n\n\n\n<p><strong>Fazit<\/strong><\/p>\n\n\n\n<p>Das Aufl\u00f6sen von Internet-Adressen in Java ist ein wichtiger Aspekt der Netzwerkprogrammierung. Die InetAddress-API bietet verschiedene Methoden, um Hostnamen in IP-Adressen und umgekehrt aufzul\u00f6sen. Durch die Implementierung eigener Resolver \u00fcber die InetAddressResolverProvider-Schnittstelle k\u00f6nnen Entwickler die Funktionalit\u00e4t der InetAddress-API erweitern und an ihre spezifischen Anforderungen anpassen.<\/p>\n\n\n\n<p>Mit der richtigen Verwendung dieser API k\u00f6nnen Entwickler robuste und leistungsf\u00e4hige Netzwerkanwendungen in Java erstellen, die effektiv mit Hostnamen und IP-Adressen arbeiten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Aufl\u00f6sen von Internet-Adressen ist ein grundlegender Schritt in der Netzwerkprogrammierung, insbesondere in Java. Die InetAddress-API bietet verschiedene Methoden, um die Aufl\u00f6sung von Hostnamen in IP-Adressen und umgekehrt zu erm\u00f6glichen. In diesem Artikel werden wir die verschiedenen Methoden der InetAddress-API behandeln, einschlie\u00dflich der R\u00fcckw\u00e4rtsaufl\u00f6sung, und demonstrieren, wie eigene Resolver \u00fcber die InetAddressResolverProvider-Schnittstelle entwickelt und integriert [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-324","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=324"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/324\/revisions"}],"predecessor-version":[{"id":325,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/324\/revisions\/325"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=324"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}