Socket Java 01
Socket Java 01
SOCKET
Corso rapido
Cos’è una
SOCKET?
Una socket è un oggetto software
che consente lo scambio di dati tra
applicazioni usando come protocolli
di comunicazione TCP e UDP
Scenario 1
App App
.
.
.
Socket
Socket
Socket
Socket
Socket
Socket
Come possiamo
distinguerle?
Ogni socket possiede un identificativo
che la distingue, il numero di porta
App App
.
.
.
Socket Socket Socket Socket Socket Socket
3000
4000
5000
6000
7000
8000
Il numero di porta è un intero a 16 bit
Porte Denominazione Descrizione
CONNECTION ORIENTED
CONNECTIONLESS
CONNECTION ORIENTED
Socket Processo
50000 Server
Processo
Client
Network
Una delle applicazioni (che chiameremo server) crea una socket speciale,
che si porrà in ascolto di richieste di connessione
CONNECTION ORIENTED
Handshaking (2/8)
Socket Processo
50000 Server
Processo
Client
Socket Network
20000
Socket Processo
50000 Server
Processo
Client
Socket Network
20000
192.168.1.100
Porta 50000
Socket Processo
50000 Server
Processo
Client
Socket Network
20000
Per fare una richiesta di connessione la socket del client deve conoscere
l’indirizzo IP della macchina server e la porta della socket in ascolto
CONNECTION ORIENTED
Handshaking (5/8)
Socket Processo
50000 Server
Processo
Client
Socket Network
20000
Socket
30000
192.168.1.200
Porta 20000
Socket Processo
50000 Server
Processo
Client
Socket Network
20000
Socket
30000
Socket Processo
50000 Server
Processo
Client
Socket Network
20000
Socket
30000
Socket Processo
50000 Server
Processo
Client
Socket Network
20000
Socket
30000
Output Input
Stream
…01010101011010101… Stream
Input Output
…01010101011010101…
Stream Stream
[…JAVA…]
CONNECTIONLESS
Ognuno dei processi, indipendentemente, crea una sua socket pronta per
inviare e ricevere dati senza negoziare una connessione
CONNECTIONLESS
From 10.0.0.1
Port 50001
In caso tutto sia andato bene (in realtà succede molto spesso), il
datagramma può essere elaborato dal processo destinatario
CONNECTIONLESS
From 10.0.0.1
Port 50001
10.0.0.2
x.x.x.x
10.0.0.1
10.0.0.3
10.0.0.2
x.x.x.x
10.0.0.1
10.0.0.3
Group subscription
GRUPPI MULTICAST
Gruppo Multicast
239.255.1.1
Per approfondire
http://en.wikipedia.org/wiki/Multicast_address
http://tools.ietf.org/html/rfc5771
http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml
Per esperimenti all’interno di una rete locale
non sarà necessario fare alcuna richiesta
Gruppo Multicast
239.255.1.1