Qual è la differenza tra SocketAddress e ServerSocket in Java?

2

Imparare a sviluppare un piccolo server HTTP incorporato per un'assegnazione di classe e gli esempi forniti su come utilizzare com.sun.net.httpserver.HttpServer utilizzano un InetSocketAddress che estende SocketAddress come collegamento tra client e server. Tuttavia, tutti i miei precedenti incarichi di programmazione di rete hanno utilizzato Socket e ServerSocket per creare connessioni raw tra un server e un client per inviare protocolli personalizzati avanti e indietro.

Chiaramente queste due classi sono diverse in quanto non condividono alcun antenato comune diverso da java.lang.Object . Ciò che è intrinsecamente speciale in ciascuno di essi li rende fondamentalmente diversi?

    
posta agent154 04.03.2014 - 04:58
fonte

1 risposta

2

È tutto nel nome ... Un tipico socket di rete è una connessione tra due porte su due macchine.

Il ServerSocket è quello che aspetta che i client si connettano ad esso ... si 'lega' ad una porta, e 'Ascolta' per le connessioni, e quando accadono, 'accetta' la connessione. Il risultato della connessione accettata è un Socket Java. Anche il client che ha effettuato la connessione (se è anche Java) ha anche una% di% in% di Java. Ora hai due prese collegate tra loro.

Il socket è descritto sopra.

Ora, l'indirizzo è i dettagli su come trovare / identificare il lato remoto della connessione Socket.

Un SocketAddress è la classe astratta per qualcosa che può indicare a Java dove connettersi quando si contatta un server e consente agli Socket di identificare server / client remoti una volta che la connessione è stata effettuata.

Un InetSocketAddress è uno SocketAddress speciale progettato per rappresentare l'indirizzo del protocollo TCP standard, quindi ha metodi per impostare / interrogare il nome host, l'indirizzo IP e il socket del lato remoto della connessione (o, in effetti, il locale anche lato).

Quindi, l'indirizzo del socket (Inet) viene utilizzato per stabilire le connessioni socket ...

Sommario:

  • ServerSocket è un listener in attesa di stabilire connessioni socket.
  • Socket è il canale di comunicazione tra due sistemi (uno il server, l'altro il client).
  • SocketAddress è una classe astratta che identifica un indirizzo
  • InetSocketAddress è una classe specifica per il protocollo TCP che consiste di indirizzi IP / nomi host e numeri di porta. Questo è usato per stabilire socket internet / TCPIP.
risposta data 04.03.2014 - 05:26
fonte

Leggi altre domande sui tag