java.net.InetAddress risolve i nomi host utilizzando predefinito host-name resolver del computer locale per impostazione predefinita:Come configurare la risoluzione del nome host per utilizzare un server DNS personalizzato in Java?
host name-to-IP risoluzione degli indirizzi si realizza attraverso l'uso di una combinazione di informazioni di configurazione macchina locale e rete di servizi di denominazione, come il Domain Name System (DNS) e Network Information Service (NIS). Il particolare servizio di denominazione utilizzato è per impostazione predefinita, il computer locale ha configurato uno. Per qualsiasi nome host, viene restituito l'indirizzo IP corrispondente. [source]
Come possiamo configurare questo comportamento senza modificare resolver hostname di default del computer locale?
Ad esempio, è comunque necessario configurare java.net.InetAddress in modo che risolva i nomi host tramite OpenDNS (208.67.222.222, 208.67.220.220) o Google Public DNS (2001: 4860: 4860 :: 8888, 2001: 4860: 4860: : 8844)?
Oppure è l'unica soluzione per creare esplicitamente richieste di pacchetti DNS, inviarle ai server tramite java.net.DatagramSocket o java.net.Socket e analizzare le risposte?
Come documentato nello stesso sito: "Queste proprietà potrebbero non essere supportate nelle versioni future." C'è un altro modo per riuscirci? – bernatp
No. Non se si desidera utilizzare 'java.net.InetAddress'. Se stai usando un meccanismo diverso, potresti ovviamente utilizzare una libreria DNS di terze parti (ad es. [Dnsjava] (http://www.dnsjava.org/)). L'unica vera ragione per cui le proprietà potrebbero cambiare è se Oracle revisiona l'implementazione 'java.net' in qualche versione futura di Java. Se ciò accade, probabilmente forniranno una nuova soluzione a questo problema anche in quel momento. – Pace
Hanno revisionato 'java.net' in Java 9, quindi le classi' sun.net' necessarie per rimuoverlo non esistono più. – ndm13