Il 0% ha trovato utile questo documento (0 voti)
3 visualizzazioni14 pagine

Socket in Java

Il documento descrive l'implementazione dei socket in Java, evidenziando l'uso dei protocolli TCP e UDP per la comunicazione tra terminali. Viene spiegato come creare e gestire socket e ServerSocket per stabilire connessioni client-server, utilizzando metodi come getInputStream() e getOutputStream(). Infine, vengono forniti dettagli sui passaggi necessari per aprire un socket e gestire le comunicazioni in entrata e in uscita.

Caricato da

Ennio Cascavilla
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
3 visualizzazioni14 pagine

Socket in Java

Il documento descrive l'implementazione dei socket in Java, evidenziando l'uso dei protocolli TCP e UDP per la comunicazione tra terminali. Viene spiegato come creare e gestire socket e ServerSocket per stabilire connessioni client-server, utilizzando metodi come getInputStream() e getOutputStream(). Infine, vengono forniti dettagli sui passaggi necessari per aprire un socket e gestire le comunicazioni in entrata e in uscita.

Caricato da

Ennio Cascavilla
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

r o

nd
sa
Socket in java

es
al
Laboratorio T.P.S. 5Bi a.s. 2025/2026

D
io
ar
M
I socket

r o
nd
sa
Socket vuol dire “presa” e consente di far comunicare due terminali.

es
I protocolli coinvolti nell’implementazione dei Socket sono:
• TCP (Transfer Control Protocol)

al
• UDP (User Datagram Protocol)

D
io
ar
M
I socket - java

r o
nd
sa
Java utilizza il modello a stream. Un socket può mantenere due tipi di stream: uno di input ed uno
di output.
Costituiscono il meccanismo fondamentale per l’astrazione della comunicazione in JAVA.

es
Uno stream rappresenta un canale monodirezionale tra due end-point.
Un dato inviato all’output stream può essere letto dall’input stream.

al
• Un processo invia dei dati ad un altro processo attraverso la rete, scrivendo sullo stream di
output associato ad un socket.

D
• Un altro processo, accede ai dati scritti in precedenza leggendo dallo stream di input del socket
stesso.
io
ar
M
I socket - java

r o
nd
Gli end-point stream si ottengono da un oggetto di tipo socket mediante i seguenti metodi:

sa
• getInputStream(); InputStream in = [Link]();

• getOutputStream(); OutputStream out= [Link]();

es
al
D
io
ar
M
I socket - java

r o
nd
sa
Socket e ServerSocket sono le due classi che intervengono nell’implementazione di una comunicazione
client-server basata sui socket.

es
➢ Socket si occupa della gestione del client che effettua la chiamata;

al
➢ ServerSocket creare un server e si mette in ascolto su una particolare porta.

D
Per utilizzare le classi Socket e ServerSocket è necessario importare i package [Link] e [Link]

Es.
io
import [Link].*;
import [Link].*;
ar
M
o
Passi per creare/gestire i socket - java

r
nd
sa
✓ (lato server) Creare un socket mettersi in ascolto su una porta.
Quando il client tenterà di aprire una connessione, il server si limiterà a richiamare il metodo accept() della classe

es
ServerSocket ottenendo, a sua volta, un riferimento al canale di comunicazione instaurato con il client.

✓ (lato client) Aprire una connessione con il server costruendo un oggetto di tipo Socket passando

al
due parametri: ip del server e la porta su cui il server stesso è in ascolto.
✓ Instaurata la connessione, le due macchine (server e client), potranno comunicare

D
semplicemente avvalendosi del modello a stream messo a disposizione dalle classi InputStream
io
e OutputStream.
ar
M
o
Passi per creare/gestire i socket - java

r
nd
✓ (lato server) Creare un socket mettersi in ascolto su una porta.
Quando il client tenterà di aprire una connessione, il server si limiterà a richiamare il metodo accept() della classe ServerSocket ottenendo, a

sa
sua volta, un riferimento al canale di comunicazione instaurato con il client.

La classe ServerSocket:

es
• incapsula le strutture dati per la gestione delle connessioni TCP/IP lato server;
• crea una socket per ogni connessione di un client. La socket creata potrà essere manipolata mediante gli streams ad essa
associata.

al
Ha due costruttori:
• ServerSocket(int port) throws IOException;
• ServerSocket(int port, int backlog) throws IOException.

D
Il parametro port indica il il numero della porta sull’host locale
Il parametro backlog indica il numero di massimo di richieste di connessione che possono essere accodate dal sistema
operativo. Utilizzando il primo costruttore tale parametro assume il valore di default di 50.
io
ar
Il metodo più importante Socket accept() throws IOException
Comporta l’attesa di una richiesta di connessione (listening).
Alla ricezione di una connessione, l’oggetto ServerSocket crea una socket che rappresenta la connessione TCP con il client.
M

Il riferimento a tale socket verrà restituito al chiamante.


o
Passi per creare/gestire i socket - java

r
nd
✓ (lato server) Creare un socket mettersi in ascolto su una porta.
Quando il client tenterà di aprire una connessione, il server si limiterà a richiamare il metodo accept() della classe ServerSocket ottenendo, a

sa
sua volta, un riferimento al canale di comunicazione instaurato con il client.

es
//esempio di creazione socket lato server

al
ServerSocket mioserver=new ServerSocket(port);
while(true){

D
Socket connessione = [Link]();
[Link](“Client connesso: " + [Link]().getHostName());
io
out= new PrintWriter([Link]());
in=new BufferedReader(new InputStreamReader([Link]()));
ar
}
M
o
Passi per creare/gestire i socket - java

r
nd
✓ (lato server) Creare un socket mettersi in ascolto su una porta.
Quando il client tenterà di aprire una connessione, il server si limiterà a richiamare il metodo accept() della classe ServerSocket ottenendo, a

sa
sua volta, un riferimento al canale di comunicazione instaurato con il client.

//creazione di un socket lato server con thread

es
Public class Server implements Runnable {
Socket socket;
public Server(Socket s){

al
socket=s;
Thread t = new Thread(this);
[Link]();

D
}
public void run(){ … }
}
io
ServerSocket readServer = new ServerSocket(port);
ar
while(true){
Socket connection = [Link]();
Server srv=new Server(connection)
M

}
o
Passi per creare/gestire i socket - java

r
nd
✓ (lato client) Aprire una connessione con il server costruendo un oggetto di tipo Socket passando

sa
due parametri: ip del server e la porta su cui il server stesso è in ascolto.

es
La classe Socket fornisce un’interfaccia socket per i client TCP.

al
Per aprire una connessione bisogna creare un’istanza di tale classe.

D
Socket connessione= new Socket(nomeHost, numport)
io
ar
M
o
Passi per creare/gestire i socket - windows

r
nd
1. Aprire un socket

sa
2. Associare un nome al socket prima dela connessione (Bind)
3. Ascoltare le connessioni in ingresso sul socket (lato server)
4. Accettare le connessioni

es
5. Comunicazione o Handshake (stretta di mano)

al
D
io
ar
M
Aprire un socket

r o
nd
socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

sa
Il parametro tipo seleziona il tipo di comunicazione da utilizzare con il socket.

es
SOCK_STREAM Gestisce una connessione di tipo full-duplex. Il protocollo TCP si basa su questo tipo di socket.

al
SOCK_DGRAM Il protocollo UDP si basa su questo tipo di socket. La trasmissione di questo tipo è inaffidabile.

Fornisce una comunicazione sequenziale a due vie di percorso. Il consumatore è tenuto a leggere l’intero
SOCK_SEQPACKET

D
pacchetto ricevuto.
Questo particolare tipo di presa può essere utilizzato per costruire manualmente qualsiasi tipo di
SOCK_RAW
io
protocollo. Un uso comune per questo tipo di socket è la realizzazione di richieste ICMP (come ping).

SOCK_RDM Tipo di connessione inaffidabile e per questo non utilizzata.


ar
M
Aprire un socket

r o
nd
socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

sa
Il parametro protocollo indica lo specifico protocollo nel dominio specificato da utilizzare per comunicare con il
socket. Se il protocollo desiderato è TCP o UDP corrispondenti costanti SOL_UDP e SOL_UDP può anche essere usato.

es
L'Internet Control Message Protocol viene utilizzato principalmente dai gateway e dagli host per

al
ICMP riportare errori nelle comunicazioni con datagrammi. Il comando "ping" (presente nella maggior

D
parte dei sistemi operativi moderni) è un esempio dell'applicazione di ICMP.
UDP E’ un protocollo inaffidabile. Ha un basso overhead.
io
TCP garantisce che tutti i pacchetti di dati vengono ricevuti nell'ordine in cui sono stati inviati. Se
TCP un pacchetto viene perso durante la trasmissione, TCP ritrasmetterà automaticamente il
ar
pacchetto fino a quando l'host di destinazione riconosce quel pacchetto.
M
o
BIND

r
nd
Associare il nome alla presa, questo deve essere fatto prima che una connessione viene stabilita

sa
utilizzando socket_connect () o socket_listen ().

es
socket_bind(socket, 'localhost')

al
D
io
ar
M

Potrebbero piacerti anche