2013-02-02 14 views
6

Questa è più una domanda alle prime armi, ma non riesco a ottenere il tipo di risposta che sto cercando su Google.indirizzo socket non risolto

Stavo leggendo la classe InetSocketAddress nel pacchetto java.net e mi sono imbattuto in questo metodo denominato createUnresolved(String host, int port). Questo metodo crea uno zoccolo irrisolto.

Fondamentalmente cosa intendiamo per irrisolto? Ho trovato questo termine spesso in errore durante la compilazione di un programma, ma non l'ho mai capito completamente. Qualcuno può spiegare il significato generale in java e il significato con il contesto di detto metodo.

Grazie.

+0

È descritto in Javadoc, che è stato erroneamente indicato. – EJP

+1

Sì, e ho anche scritto che non l'ho capito completamente. – Rajat

risposta

0

ho trovato questo in a sun-blog:

ma ha deciso di non apportare modifiche, ma usare createUnresolved() per creare un InetSocketAddress, in modo da sapere ciò che è stato utilizzato per creare un'istanza di esso. Se l'utente ha schiaffeggiato in un indirizzo IP per cominciare, non lo gestiremo. (Penso che prima non fosse distinguibile) Il token avrà l' utilizzato dall'utente (IP o nome) all'inizio e in caso di utilizzo del nome, la chiave della cache dei token non cambierà anche con le modifiche di addr. Quindi il token di delega dovrebbe continuare a funzionare.

Fondamentalmente, è un InetSocketAddress mezzo cotto, quindi non è l'iterazione finale. E 'un passo intermedio ..

E Da API:

Può anche essere una coppia (host + numero di porta), nel qual caso verrà effettuato un tentativo di risolvere il nome host.

Se la risoluzione non riesce, allora l'indirizzo è detto di essere irrisolto, ma può ancora essere utilizzato su alcune circostanze, come la connessione attraverso un proxy

Quindi non abbiamo trovato il nome host, o l'user-friendly " www.abc.com "metodo.

Ma se ci si collega tramite un proxy è OK perché il server proxy gestisce il nome host.

0

ho avuto la stessa eccezione: java.net.UnknownHostException: Host è irrisolto: https://www.google.com

Il problema era perché ho aggiunto i protocollo HTTPS: //, il problema viene risolto dopo ho rimosso https: //

try { 
    Socket socket = new Socket(); 
    socket.connect(new InetSocketAddress("www.google.com", 443), 100); 
    socket.close(); 
    return true; 
} catch (IOException e) { 
    e.printStackTrace(); 
    return false; 
} 
Problemi correlati