Normalmente, un server viene eseguito su un computer specifico e ha un socket associato a un numero di porta specifico. Il server attende solo, ascoltando il socket per un client per effettuare una richiesta di connessione.
Sul lato client: il client conosce il nome host della macchina su cui è in esecuzione il server e il numero di porta su cui il server è in ascolto. Per effettuare una richiesta di connessione, il client tenta di incontrarsi con il server sulla macchina e sulla porta del server., Il client deve anche identificarsi con il server in modo che si leghi a un numero di porta locale che utilizzerà durante questa connessione. Questo di solito è assegnato dal sistema.
Se tutto va bene, il server accetta la connessione. Al momento dell’accettazione, il server ottiene un nuovo socket associato alla stessa porta locale e ha anche il suo endpoint remoto impostato sull’indirizzo e sulla porta del client., Ha bisogno di un nuovo socket in modo che possa continuare ad ascoltare il socket originale per le richieste di connessione mentre tende alle esigenze del client connesso.
Sul lato client, se la connessione viene accettata, viene creato un socket e il client può utilizzare il socket per comunicare con il server.
Il client e il server possono ora comunicare scrivendo o leggendo dai loro socket.,
Un socket è un endpoint di un collegamento di comunicazione bidirezionale tra due programmi in esecuzione sulla rete. Un socket è associato a un numero di porta in modo che il livello TCP possa identificare l’applicazione a cui i dati sono destinati ad essere inviati.
Un endpoint è una combinazione di un indirizzo IP e un numero di porta. Ogni connessione TCP può essere identificata in modo univoco dai suoi due endpoint. In questo modo puoi avere più connessioni tra il tuo host e il server.,
Il pacchettojava.net
nella piattaforma Java fornisce una classe,Socket
, che implementa un lato di una connessione bidirezionale tra il programma Java e un altro programma sulla rete. La classeSocket
si trova in cima a un’implementazione dipendente dalla piattaforma, nascondendo i dettagli di un particolare sistema dal tuo programma Java. Utilizzando la classejava.net.Socket
invece di fare affidamento sul codice nativo, i programmi Java possono comunicare sulla rete in modo indipendente dalla piattaforma.,
Inoltre, java.net
include la classe ServerSocket
, che implementa un socket che i server possono utilizzare per ascoltare e accettare connessioni ai client. Questa lezione mostra come utilizzare le classiSocket
eServerSocket
.
Se si sta tentando di connettersi al Web, la classe URL
e le classi correlate (URLConnection
, URLEncoder
) sono probabilmente più appropriate delle classi socket., In effetti, gli URL sono una connessione di livello relativamente alto al Web e utilizzano socket come parte dell’implementazione sottostante. Vedere Utilizzo degli URL per informazioni sulla connessione al Web tramite URL.