psp-b3 sockets

UT 5: comunicación cliente-servidor mediante sockets

eugeniaperez.es

UT 5: comunicación c/S mediante sockets

1.1 Definición

¿qué es un socket?

Es un mecanismo por el cual dos programas, posiblemente situados en ordenadores distintos puede intercambiar información.

eugeniaperez.es

De manera ordenada

Y fiable

UT 5: comunicación c/S mediante sockets

1.1 Definición

comunicación

Los dos tendrán una IP y un puerto para comunicarse.

eugeniaperez.es

UT 5: comunicación c/S mediante sockets

1.2 Socket vs. aplicación web

Qué les diferencia de una 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

UT 5: comunicación c/S mediante sockets

1.2 Socket vs. aplicación web

ejemplos en java... ¿?

Los escenarios son diferentes

  • Sockets
  • Aplicaciones web -> Servlets

eugeniaperez.es

UT 5: comunicación c/S mediante sockets

1.2 Socket vs. aplicación web

  • Sockets: para aplicaciones que gestionan la red a bajo nivel (con un mayor detalle):

eugeniaperez.es

  • Servidor web, servidor FTP
  • Aplicaciones web: herramientas específicas de aplicaciones, mayor soporte:
  • Sitios y servicios Web (un blog, un carrito de la compra, etc)

UT 5: comunicación c/S mediante sockets

1.3 Propiedades

  • Los Sockets permiten un control mucho más detallado del intercambio de información.

eugeniaperez.es

  • Fiabilidad: no hay pérdida de datos
  • No duplicidad de datos
  • Se conserva el orden del envío
  • Se establece la conexión antes de comunicarse
  • Hay envíos prioritarios o urgentes

 

UT 5: comunicación c/S mediante sockets

1.4 Aplicaciones

¿Qué sería de nosotros hoy sin los navegadores?

eugeniaperez.es

  • Utilizan WebSockets para intercambio de información.

 

¿Qué otras aplicaciones pueden utilizar sockets?

  • Cliente-Servidor Web.

 

  • Cliente-Servidor FTP.

 

  • Cliente-Servidor de correo electrónico.

 

  • Aplicación móvil que solicita datos a otro equipo.

 

UT 5: comunicación c/S mediante sockets

2. Arquitectura cliente-servidor

Las tareas están divididas.

eugeniaperez.es

Separación a nivel conceptual

Realiza las tareas

más complejas

UT 5: comunicación c/S mediante sockets

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

UT 5: comunicación c/S mediante sockets

EJEMPLO 1

eugeniaperez.es

DESCARGA En BITBUCKET:

Proyecto PSP.UT5.GetIP:

https://eugenia_perez@bitbucket.org/eugenia_perez/psp.ut5.getip.git

 

Usuario: cuatrovientos

Password: Cuatrovientos

 

 

 

UT 5: comunicación c/S mediante sockets

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

UT 5: comunicación c/S mediante sockets

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");

UT 5: comunicación c/S mediante sockets

3.1 Servidor y clientes

Comunicación bidireccional:

equipo servidor espera a que le llegen peticiones del cliente.

 

 

eugeniaperez.es

UT 5: comunicación c/S mediante sockets

3.2 Puertos

¿Cómo se pueden ofrecer varios servicios desde un único servidor?

 

 

 

eugeniaperez.es

único servidor -> única IP -> múltiples puertos

UT 5: comunicación c/S mediante sockets

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

UT 5: comunicación c/S mediante sockets

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.

UT 5: comunicación c/S mediante sockets

4. Sockets

Nos permiten comunicar dos máquinas. Necesitamos:

  • Un Socket de cliente.
  • Un ServerSocket de servidor.
  • Y un InputStream y un OutputStream tanto para el cliente como para el servidor.

eugeniaperez.es

UT 5: comunicación c/S mediante sockets

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

UT 5: comunicación c/S mediante sockets

4. Sockets

eugeniaperez.es

Las clases principales están en java.net y son dos:

  • ServerSocket: en el lado servidor para escuchar los eventos entrantes y aceptarlos: accept().

 

  • Socket: la utiliza un cliente para iniciar la conexión. 
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

UT 5: comunicación c/S mediante sockets

EJEMPLO 2

eugeniaperez.es

DESCARGA En BITBUCKET:

Proyecto PSP.UT5.SocketClientServer:

https://eugenia_perez@bitbucket.org/eugenia_perez/psp.ut5.socketclientserver.git

 

Usuario: cuatrovientos

Password: Cuatrovientos

 

 

 

UT 5: comunicación c/S mediante sockets

ACTIVIDADES

eugeniaperez.es

PREGUNTAS 1-5: PÁG. 142

4.1 Cliente y servidor dentro de la misma red

 

Pág. 189: Actividad 1

 

 

 

 

Made with Slides.com