Java Socket
● Connettono due processi usando Porte (unsigned short, 16 bit)
- 0 -> 1023 : well-know (/etc/services)
- 1024 -> 49151 : registered (servizi di rete)
- 49152 -> 65535 : dinamic (noi usiamo queste)
● <PSEL, IP_SRC, PORT_SRC, IP_DST, PORT_DST> definizione di socket
● INETADDRESS (no costruttori)
- InetAddress InetAddress. getByName (hostName) -> da nome simbolico a indirizzo
numerico
- InetAddress[ ] InetAddress. getAllByName (hostName) -> tutti gli indirizzi associati a quel
nome simbolico
- InetAddress InetAddress. getLocalHost () -> ip host locale (diverso da localhost)
- byte[ ] InetAddress. getAddress () -> estrae indirizzo IP dalla struttura (ma serve
conversione!)
- String InetAddress. getHostAddress () ->estrae ip in formato decimale puntato
- String InetAddress. getHostName () -> estrae nome simbolico host dalla struttura
- InetAddress InetAddress. getByAddress (byte [ ] address) -> ridà InetAddress con quell’ip
● INETSOCKETADDRESS
1. Costruttori
- InetSocketAddress (
InetAddress addr, int port )
- InetSocketAddress( String hostname, int port ) Trova lui IP
- InetSocketAddress( int port ) Crea socket con ip = wildcard address
2. Metodi
- InetAddress getAddress () -> InetAddress
- String getHostName () -> hostname
- int getPort () -> porta
● Usa metodi try-catch con catch(UnknowHostException uhe) {uhe.printStackTracer();}
connection-oriented : trasferimento di stream di byte
- garanzia di ordine nell’arrivo dei byte
- non preservato confine di messaggio
- da origini della rete (comandi Unix)
- può anche essere affidabile TCP
connection-less : trasferimento di datagram (UDP / IP)
- best effort:
- non garantito ordinamento né arrivo
- preservato confine messaggi
- può anche essere affidabile
SERVIZIO CONNECTION ORIENTED
● Fasi
1. Creazione Socket
2. Binding (host + porta)
3. Connessione Client-Server
4. Scambio dati (Byte Stream)
5. Chisura