Professional Documents
Culture Documents
XD PRAC3 ComunicacioAplicacions
XD PRAC3 ComunicacioAplicacions
Pràctica 3:
Comunicació d’aplicacions
Introducció
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
2
Què són els sockets?
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
3
Què són els sockets?
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
4
Com funcionen els sockets?
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
5
Assignació de ports
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
6
Tipus de sockets (velocitat vs. fiabilitat)
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
7
Tipus de sockets (velocitat vs. fiabilitat)
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
§ Concurrent?
– Els servidors orientats a la connexió poden ser concurrents o no
concurrents.
– Concurrents
• Poden gestionar varis clients a la vegada, amb un fil d’execució
(thread) per cada client al que atenen (aquest concepte el fareu
servir en altres assignatures). La seva gestió és més complexa.
– No concurrents (o seqüencials)
• Només tracten una sol·licitud cada vegada, de manera que les
demés peticions es van encuant, els clients es bloquegen...
9
Creació de sockets
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
Client: a quina IP
està el servidor? En
Servidor: port que quin port escolta?
utilitza el socket
10
Sockets en Java (model orientat a la connexió)
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
11
Sockets en Java (model orientat a la connexió)
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html
12
Sockets en Java (NO orientat a la connexió)
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
https://docs.oracle.com/javase/7/docs/api/java/net/DatagramSocket.html
13
Anàlisi d'exemples
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
import java.net.*;
import java.io.*;
try {
DatagramSocket socketUDP = new DatagramSocket();
byte[] mensaje = args[0].getBytes();
InetAddress hostServidor = InetAddress.getByName(args[1]);
int puertoServidor = 6789;
Extret de
http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSocketsUDP/
15
Exemple de client no orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
// Enviamos el datagrama
socketUDP.send(peticion);
// Cerramos el socket
socketUDP.close();
} catch (SocketException e) {
System.out.println("Socket: " + e.getMessage());
} catch (IOException e) {
System.out.println("IO: " + e.getMessage());
}
} Extret de
} http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSocketsUDP/
16
Exemple de servidor no orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
import java.net.*;
import java.io.*;
try {
while (true) {
// Construimos el DatagramPacket para recibir peticiones
DatagramPacket peticion =
new DatagramPacket(bufer, bufer.length);
Extret de
http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSocketsUDP/
17
Exemple de servidor no orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
} catch (SocketException e) {
System.out.println("Socket: " + e.getMessage());
} catch (IOException e) {
System.out.println("IO: " + e.getMessage());
}
} Extret de
http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSocketsUDP/
}
18
Esquema: no orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
Tanca el socket
19
Exemple de client orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
import java.net.*;
import java.io.*;
20
Exemple de client orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
String linea;
21
Exemple de client orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
Extret de
http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSocketsTCP/
22
Exemple de servidor orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
import java.io.*;
import java.net.*;
23
try {
// Se bloquea hasta que recibe alguna petición de un cliente
// abriendo un socket para el cliente
socketCliente = socketServidor.accept();
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
} catch (IOException e) {
System.out.println("IOException: " + e.getMessage());
}
salida.close();
entrada.close();
socketCliente.close();
socketServidor.close();
Extret de
} http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSocketsTCP/
}
24
Esquema: orientat a la connexió
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
Establiment de connexió
Atén el client
25
Repte: fes la teva pròpia aplicació
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
26
Memòria de pràctiques
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
27
Referències
Xarxes de Dades i Internet – Departament d’Enginyeria Informàtica i Matemàtiques
§ http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSock
etsUDP/
§ http://www.it.uc3m.es/celeste/docencia/cr/2003/PracticaSock
etsTCP/
§ http://sopa.dis.ulpgc.es/ii-
dso/leclinux/ipc/sockets/sockets.pdf
§ http://umh2266.edu.umh.es/wp-
content/uploads/sites/197/2013/04/T5_ClientServer.pdf
§ Crèdits de les imatges https://www.stickpng.com/
28