eugeniaperez.es
1.1 Definición
Es un mecanismo por el cual dos programas, posiblemente situados en ordenadores distintos puede intercambiar información.
eugeniaperez.es
De manera ordenada
Y fiable
1.1 Definición
Los dos tendrán una IP y un puerto para comunicarse.
eugeniaperez.es
1.2 Socket vs. aplicación web
¡El nivel de abstracción!
Sockets -> llamadas directamente a TCP/IP, no seguridad
Aplicaciones web -> nivel más alto, autenticación y seguridad, gestionan este trabajo por nosotros...
eugeniaperez.es
1.2 Socket vs. aplicación web
Los escenarios son diferentes
eugeniaperez.es
1.2 Socket vs. aplicación web
eugeniaperez.es
1.3 Propiedades
eugeniaperez.es
1.4 Aplicaciones
¿Qué sería de nosotros hoy sin los navegadores?
eugeniaperez.es
¿Qué otras aplicaciones pueden utilizar sockets?
2. Arquitectura cliente-servidor
Las tareas están divididas.
eugeniaperez.es
Separación a nivel conceptual
Realiza las tareas
más complejas
2. Arquitectura cliente-servidor
Java ofrece un potente soporte a esta comunicación.
Permite la comunicación de múltiples clientes mediante sockets que son envueltos en flujos (streams)
Es parecido a la lectura/escritura de archivos en Java.
eugeniaperez.es
EJEMPLO 1
eugeniaperez.es
Proyecto PSP.UT5.GetIP:
https://eugenia_perez@bitbucket.org/eugenia_perez/psp.ut5.getip.git
Usuario: cuatrovientos
Password: Cuatrovientos
EJEMPLO 1
En este programa se utiliza:
Para obtener la IP del equipo a través del nombre del mismo.
eugeniaperez.es
InetAddress a = null;
try {
a = InetAddress.getByName("Zenbook");
} catch (UnknownHostException ex) {
Logger.getLogger(GetIp.class.getName()).log(Level.SEVERE, null, ex);
}
InetAddress a = InetAddress.getByName("Zenbook");
El try-catch sirve para tratar los posibles errores
EJEMPLO 1
Nos permite también la IP de otros hosts en la red:
Y el resultado es:
eugeniaperez.es
InetAddress a = InetAddress.getByName("google.es");
3.1 Servidor y clientes
Comunicación bidireccional:
equipo servidor espera a que le llegen peticiones del cliente.
eugeniaperez.es
3.2 Puertos
¿Cómo se pueden ofrecer varios servicios desde un único servidor?
eugeniaperez.es
único servidor -> única IP -> múltiples puertos
3.2 Puertos
El programa cliente sabe cómo conectarse a la máquina mediante su IP, y mediante su puerto se sabe a qué tipo de servicio se comunica.
eugeniaperez.es
192.168.1.129:80
192.168.1.129:8080
192.168.1.129:20/21
3.2 Puertos
El servidor puede establecer cualquier puerto entre [1-65535]
El cliente cualquiera de los no reservados [1-1024]
Siempre y cuando los puertos estén libres...
eugeniaperez.es
Lo importante es que el cliente sepa el puerto del servidor para conectarse.
4. Sockets
Nos permiten comunicar dos máquinas. Necesitamos:
eugeniaperez.es
4. Sockets
eugeniaperez.es
1. El servidor abre el canal
2. Publica en la red la dirección
3. Espera por solicitudes
4. El cliente abre el canal
5. Establece conexión con el servidor
6. Establece la conexión
7. Envía y recibe datos
8. Envía y recibe datos
9.Cierra el canal de comunicación
10. Cierra el canal de comunicación
11. El servidor espera a una nueva petición por el cliente
4. Sockets
eugeniaperez.es
Las clases principales están en java.net y son dos:
public static final int PORT = 8080;
ServerSocket server = new ServerSocket(PORT);
Socket client = new Socket(ip, Server.PORT);
Se conecta a la IP del server y el mismo puerto
EJEMPLO 2
eugeniaperez.es
Proyecto PSP.UT5.SocketClientServer:
https://eugenia_perez@bitbucket.org/eugenia_perez/psp.ut5.socketclientserver.git
Usuario: cuatrovientos
Password: Cuatrovientos
ACTIVIDADES
eugeniaperez.es
4.1 Cliente y servidor dentro de la misma red
Pág. 189: Actividad 1