Programación Concurrente y Distribuida Sockets en Java PDF

Document Details

PreferableGingko

Uploaded by PreferableGingko

Universidad Europea de Madrid

Alfonso Antolínez García

Tags

sockets en Java programación concurrente programación distribuida redes

Summary

Este documento presenta una introducción a la programación concurrente y distribuida con sockets en Java. Describe los conceptos clave de la arquitectura TCP/IP y el modelo cliente-servidor en el contexto de la comunicación de red. Se ilustran también las capas de la arquitectura TCP/IP.

Full Transcript

Programación Concurrente y Distribuida Tema 5. Sockets en Java Alfonso Antolínez García ® 1 Computación en Sistemas Distribuidos Sockets en Java Alfonso Antolínez García ® Computación en Sistemas Distribuidos...

Programación Concurrente y Distribuida Tema 5. Sockets en Java Alfonso Antolínez García ® 1 Computación en Sistemas Distribuidos Sockets en Java Alfonso Antolínez García ® Computación en Sistemas Distribuidos TCP-IP Programación Concurrente y Distribuida Sockets en Java El modelo TCP/IP El TCP/IP (Protocolo de control de transmisión/Protocolo de Internet) es un marco conceptual que se utiliza para transmitir datos a través de una red. El conjunto de protocolos TCP/IP se ha convertido en el estándar de facto para las comunicaciones en el mundo. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El modelo arquitectónico TCP/IP El conjunto de protocolos TCP/IP recibe ese nombre por dos de sus protocolos más importantes: el Protocolo de Control de Transmisión (TCP) y el Protocolo de Internet (IP). El principal objetivo de diseño de TCP/IP era construir una interconexión de redes, o Internet, que proporcionase servicios de comunicación universales a través de redes físicas heterogéneas. Una interconexión de redes de este tipo permite la comunicación entre hosts en diferentes redes, quizás separados por una gran área geográfica. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Internet consta de los siguientes grupos de redes: Redes troncales: grandes redes que existen principalmente para interconectar otras redes. Actualmente, las redes troncales son NSFNET en EE. UU., EBONE en Europa y grandes redes troncales comerciales. Redes regionales que conectan, por ejemplo, universidades. Redes comerciales que brindan acceso a las redes troncales a los suscriptores, y redes propiedad de organizaciones comerciales para uso interno que también tienen conexiones a Internet. Redes locales, como redes universitarias de todo el campus. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Otro aspecto importante de la interconexión de redes TCP/IP es la creación de una abstracción estandarizada de los mecanismos de comunicación proporcionados por cada tipo de red. Cada red física tiene su propia interfaz de comunicación dependiente de la tecnología, en forma de una interfaz de programación que proporciona funciones de comunicación básicas (primitivas). Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java TCP/IP proporciona servicios de comunicación que se ejecutan entre la interfaz de programación de una red física y las aplicaciones de usuario. Permite una interfaz común para todas las aplicaciones, independientemente de la red física subyacente. Por lo tanto, la arquitectura de la red física queda oculta para el usuario y el desarrollador de una aplicación. La aplicación solo necesita codificar la abstracción de comunicación estandarizada para poder funcionar en cualquier tipo de red física y plataforma operativa. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Capas de la arquitectura TCP/IP Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El modelo cliente/servidor TCP es un protocolo punto a punto orientado a la conexión. No existen relaciones maestro/esclavo. Sin embargo, las aplicaciones suelen utilizar un modelo cliente/servidor para las comunicaciones. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El modelo cliente/servidor Un servidor es una aplicación que ofrece un servicio a los usuarios de Internet; un cliente es un solicitante de un servicio. Una aplicación consta de una parte de servidor y una parte de cliente, que pueden ejecutarse en el mismo sistema o en sistemas diferentes. Los usuarios suelen invocar la parte de cliente de la aplicación, que crea una solicitud para un servicio en particular y la envía a la parte de servidor de la aplicación utilizando TCP/IP como vehículo de transporte. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El modelo cliente/servidor El servidor es un programa que recibe una solicitud, realiza el servicio requerido y envía los resultados en una respuesta. Un servidor normalmente puede gestionar varias solicitudes y varios clientes solicitantes al mismo tiempo Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El modelo cliente/servidor La mayoría de los servidores esperan las solicitudes en un puerto conocido para que sus clientes sepan a qué puerto deben dirigir sus solicitudes. El cliente normalmente utiliza un puerto arbitrario llamado puerto efímero para su comunicación. Los clientes que desean comunicarse con un servidor que no utiliza un puerto conocido deben tener otro mecanismo para saber a qué puerto deben dirigir sus solicitudes. Este mecanismo puede emplear un servicio de registro como portmap, que sí utiliza un puerto conocido. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El modelo cliente/servidor Alfonso Antolínez García ® Computación en Sistemas Distribuidos Bridges, routers, switches y gateways Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Existen muchas formas de proporcionar acceso a otras redes. En una interconexión de redes, esto se hace por medio de routers (enrutadores). En esta sección, veremos veremos los conceptos de enrutador, puente (bridge) y una gateway (puerta de enlace) para permitir el acceso remoto a la red. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Existen muchas formas de proporcionar acceso a otras redes. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Bridge Un puente o bridge es un dispositivo de interconexión de redes de ordenadores que opera en la capa 2 (nivel de enlace de datos) del modelo OSI. Interconecta segmentos de LAN en el nivel de capa de interfaz de red y reenvía tramas entre ellos. Un puente realiza la función de un relé MAC y es independiente de cualquier protocolo de capa superior (incluido el protocolo de enlace lógico). Proporciona conversión de protocolo de capa MAC, si es necesario. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Bridge Se dice que un puente es transparente a IP. Es decir, cuando un host IP envía un datagrama IP a otro host en una red conectada por un puente, envía el datagrama directamente al host y el datagrama "cruza" el puente sin que el host IP que lo envía sea consciente de ello. Interconecta dos segmentos de red (o divide una red en segmentos) realizando el traspaso de datos de una red hacia otra, con base en la dirección física de destino de cada paquete. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Bridge MAC address Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Switch Un conmutador o switch es un dispositivo digital de lógica de interconexión de redes de computadores que opera en la capa 2 (nivel de enlace de datos) del modelo OSI. Su función es interconectar dos o más segmentos de red, de manera similar a los puentes (bridges), pasando datos de un segmento a otro de acuerdo con la dirección MAC de destino de las tramas en la red. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Switch Los conmutadores se utilizan cuando se desea conectar múltiples redes, fusionándolas en una sola. Al igual que los puentes, dado que funcionan como un filtro en la red, mejoran el rendimiento y la seguridad de las LANs (Local Area Network– Red de Área Local). Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Switch Los conmutadores poseen la capacidad de aprender y almacenar las direcciones de red de nivel 2 (direcciones MAC) de los dispositivos alcanzables a través de cada uno de sus puertos. Por ejemplo, un equipo conectado directamente a un puerto de un conmutador provoca que el conmutador almacene su dirección MAC. Esto permite que, a diferencia de los concentradores o hubs, la información dirigida a un dispositivo vaya desde el puerto origen al puerto de destino. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Switch En el caso de conectar dos conmutadores o un conmutador y un concentrador, cada conmutador aprenderá las direcciones MAC de los dispositivos accesibles por sus puertos, por lo tanto en el puerto de interconexión se almacenan las MAC de los dispositivos del otro conmutador. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Router El router interconecta redes en el nivel de la capa de red y enruta paquetes entre ellas. Un router pueden seleccionar las mejores rutas de acceso y los tamaños de paquete óptimos. El enrutador (router), es un dispositivo de hardware para interconexión de red de ordenadores que opera en la capa tres (nivel de red). Un router es un dispositivo para la interconexión de redes informáticas que permite asegurar el enrutamiento de paquetes entre redes o determinar la ruta que debe tomar el paquete de datos. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Router La función de enrutamiento básica se implementa en la capa IP de la pila de protocolos TCP/IP, por lo que cualquier host o estación de trabajo que ejecute TCP/IP en más de una interfaz podría, en teoría, reenviar datagramas IP (actuar como router). Sin embargo, los routers dedicados brindan un enrutamiento mucho más sofisticado. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Router Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Router Los router pueden estar conectados a dos o más redes a la vez, e implica la realización de tareas que conciernen a los tres niveles inferiores del modelo OSI: físico, enlace de datos y red. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Router La primera función de un router, es saber si el destinatario de un paquete de información está en nuestra propia red o en una remota. 192.168.xx1.xxx Para determinarlo, utiliza la“máscara de subred”. 255.255.255.000 La máscara de subred determina a qué grupo de ordenadores pertenece un equipo. Si la máscara de subred de un paquete de información enviado no se corresponde a la red LAN (red local), el router determinará, que el destino de ese paquete está en otro segmento de red diferente o salir a otra red (WAN), para conectar con otro router. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Gateway (Pasarela) Son routers que implementan software específico (correspondientes a niveles de transporte, sesión, presentación y aplicación, del modelo OSI), que permiten interconectar redes que utilizan distintos protocolos,por ejemplo: TCP/IP, SNA, Netware, VoIP. Los Gateways deben desensamblar las tramas y paquetes para obtener el mensaje original y a partir de éste volver a reconfigurar los paquetes y las tramas, pero de acuerdo con el protocolo de la red donde se encuentra la estación de destino. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Gateway (Pasarela) Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Comparativa Modelo TCP/IP – Modelo OSI Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Protocolos TCP FTP Protocolo de transferencia de datos (File Transfer Protocol). Interfaz y los servicios para enviar y recibir archivos. SMTP Protocolo simple de transferencia de correo (Simple Mail Transfer Protocol). Servicios para enviar correos electrónicos. TCP Protocolo de control de transporte (Transfer Control Protocol). Implementa la conexión y el manejo de los paquetes de datos. Gestiona la conexión entre el dispositivo emisor y el receptor. UDP Protocolo de datagrama de usuario (User Datagram Protocol). Funciona como transporte sin conexión, proporcionando servicios a la par de TCP. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Protocolos TCP IP Protocolo de Internet (Internet Protocol). Se encarga de realizar el direccionamiento de los paquetes en toda la red de datos; abarca tanto redes locales (LAN) como WAN. ARP Protocolo de resolución de direcciones (Address Resolution Protocol). Se ocupa de que las direcciones IP (software) y su correspondencia con las direcciones MAC (hardware). Examples of OUI for well-known vendors are as follows: CC:46:D6 : Cisco 3C:5A:B4 : Google, Inc. 3C:D9:2B : Hewlett Packard 00:9A:CD : HUAWEI TECHNOLOGIES CO.,LTD Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Examples of OUI for well-known vendors are as follows: CC:46:D6 : Cisco 3C:5A:B4 : Google, Inc. 3C:D9:2B : Hewlett Packard 00:9A:CD : HUAWEI TECHNOLOGIES CO.,LTD Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Direcciones IP Cuando escribimos el nombre del sitio al cual queremos visitar, como por ejemplo, https://www.eu.es en lugar de escribir la dirección IP, 120.244.466.126. De la conversión entre el nombre de dominio (www.eu.es) y la IP de internet, se encarga el DNS (Domain Name Server) que convierte el nombre en la dirección IP. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Direcciones IP DNS (Domain Name Server) Las direcciones IP actuales pueden ser v4 y v6 … Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Direcciones IP v4 Son números de hasta 32 bits que permiten hasta 232=4.294.967.296 posibles combinaciones en total. Estas direcciones se dividen en dos partes: la ID del host y la ID de red. Como vemos, una dirección IP es de 32 Bits pero se divide en cuatro octetos, donde de acuerdo a la clase serán utilizados para definir número de red o número de host. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Direcciones IP v4 La ICANN (Internet Corporation of Assigned Names and Numbers) define las tres clases de direcciones IP A, B y C. Clase A: Primer octeto a ID de Red (8 Bits) y los últimos tres a ID de Host (24 Bits). Lo que determina: 128 redes y 16.777.214 Hosts. Dentro del rengo 1.0.0.0 a 126.255.255.255. Clase B: Primer y segundo octetos a ID de Red (16 Bits) y los dos últimos a ID de Host (16 Bits). Lo que determina: 16.384 redes y 65.534 Hosts. Dentro del rengo 128.0.0.0 a 191.255.255.255. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Direcciones IP v4 Clase C: Los primeros tres octetos a ID de Red (24 Bits) y el último a ID de Host (8 Bits). Lo que determina: 2.097.152 redes y 254 Hosts. Dentro del rengo 192.0.0.0 a 223.255.255.255. Clase D: Se utilizan para grupos de multicast, no hay necesidad de asignar octetos o bits a las distintas direcciones de red y host. En la actualidad no es operativa y ya está obsoleta. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Direcciones IP v6 Las direcciones IPv6 trabajan de forma similar a IPv4. Debido a la gran cantidad de dispositivos que se conectan a internet (IoT), IPv4 ha quedado prácticamente agotada, y se tuvo que desarrollar otra versión que aumentara la cantidad en muchos más millones de direcciones. IPv6 trabaja a 128 bits y expresado en numeración hexadecimal de 32 dígitos (aproximadamente, 2 128 = 3,4028236692093846346337460743177e+38 direcciones). Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Estructura IP v6 Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Estructura IP v6 Alfonso Antolínez García ® Computación en Sistemas Distribuidos Sockets en Java Programación Concurrente y Distribuida ¡PREGUNTA! ¿Qué es un socket en TCP/IP y UDP y para qué sirven? Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Los sockets son esenciales para la comunicación en red. Sirven como enlaces para la comunicación entre aplicaciones, tanto dentro de un mismo dispositivo como a través de una red de comunicaciones. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Por lo tanto … Un socket permite el intercambio de datos entre procesos situados en el mismo equipo o diferentes. Un socket se define por el conjunto: dirección(es) IP, protocolo de transporte y número de puerto. Esto facilita una conexión directa entre quien pide un servicio (cliente) y quien lo ofrece (servidor). La tecnología de sockets hace posible la arquitectura cliente-servidor. Alfonso Antolínez García ® Programación Concurrente y Distribuida ¡PREGUNTA! ¿Qué protocolos se emplean para crear un socket? Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Se utilizan dos protocolos principales en Internet: TCP y UDP. TCP asegura una conexión estable para intercambiar datos. UDP envía información sin garantizar la recepción. TCP garantiza que los datos lleguen en orden y sin errores. UDP se emplean en servicios que aceptan perder cierta información, por ser más rápidos. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El TCP/IP es vital para Internet. Este protocolo hace posible enviar datos de forma segura. El UDP también es crucial, pero trabaja de manera distinta. A diferencia del TCP, el UDP busca rapidez en vez de precisión. Esto hace que sea perfecto para usos como video o juegos online. Su diseño optimiza la velocidad aunque no garantiza que los datos llegarán completos. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Para asegurar la entrega de datos, TCP incluye un proceso de handshake o negociación, mediante el cual se establece una conexión antes de la transferencia de información. Este método previene la pérdida de datos y facilita la corrección de errores en tiempo real. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Diagrama TCP/IP Three-Way Handshake Server o negociación, Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java A diferencia de TCP, el Protocolo de Datagrama de Usuario (UDP) es un protocolo que opera sin conexión, lo que implica una transferencia de datos menos fiable, pero significativamente más rápida. UDP envía los datos sin establecer previamente una conexión entre el remitente y el receptor, sacrificando la garantía de entrega por la velocidad. Es ampliamente utilizado en aplicaciones donde la rapidez es más importante que la precisión, como juegos en línea, llamadas de voz sobre IP (VoIP), y streaming de video. La ligera naturaleza del UDP, que minimiza la sobrecarga de verificar la recepción de los paquetes, ideal para usos donde la velocidad es prioritaria. Alfonso Antolínez García ® Computación en Sistemas Distribuidos Comparativa entre TCP y UDP Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Comparativa entre TCP y UDP Alfonso Antolínez García ® Programación Concurrente y Distribuida ¡PREGUNTA! ¿Para qué se han concebido los puertos? Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Dentro de la comunicación a través de redes (internet u otras), los protocolos TCP y UDP se encargan de establecer la conexión, ensamblar los paquetes de datos tras la transmisión y a continuación, enviarlos a los programas a los que se dirigían en el receptor. Para que esta transferencia pueda tener lugar, el sistema operativo debe generar y abrir entradas. Programación Concurrente y Distribuida Sockets en Java TCP y UDP permiten la conexión entre dispositivos a través de internet u otras redes. No obstante, para que los paquetes de datos puedan dar con una entrada en el ordenador o servidor del otro lado de la conexión, debe haber entradas abiertas. A cada entrada se le asigna un número de identificación específico. Este tipo de entradas al sistema se denominan puertos. Tras la transmisión, el sistema receptor sabe a dónde hay que suministrar los datos gracias al número de puerto. En el paquete de datos siempre se incluyen dos números de puerto, el del emisor y el del receptor. Alfonso Antolínez García ® Programación Concurrente y Distribuida ¡PREGUNTA! ¿Sockets TCP/IP y UDP y la Arquitectura cliente/servidor? Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java En la arquitectura cliente/servidor … El cliente manda solicitudes que el servidor procesa y responde. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Usan protocolos como TCP para una transmisión de datos segura evitando pérdidas de información. En la comunicación se utilizan puertos que van desde 0 hasta 65535, recomendándose usar los que van entre el 1024 y el 65535. Los números más bajos se reservan para servicios específicos. El puerto 1234 es común en Java. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Algunos de estos números de puertos están estandarizados y se asignan a determinadas aplicaciones. Estos puertos estándar también se llaman puertos bien conocidos o well-known ports, ya que los números de identificación son fijos. Los puertos registrados o registered ports, por su parte, son puertos que una organización o un fabricante de software ha reservado para su aplicación. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java El responsable del registro es la Internet Assigned Numbers Authority (IANA). Junto a estos, también hay un amplio rango de números de puerto que se asignan de forma dinámica. Un navegador usa un puerto de este tipo durante una visita a una página web. Una vez el usuario abandona la página, el número vuelve a quedar libre. Alfonso Antolínez García ® Computación en Sistemas Distribuidos Lista de los puertos más importantes Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Entre los más de 65000 puertos TCP y UDP disponibles, hay algunos códigos de identificación que son muy importantes para la comunicación en internet. Hay puertos que solo cuentan con autorización para uno de los dos protocolos (TCP o UDP). Hay otros puertos que no se han reservado oficialmente para un servicio determinado, pero que, en la práctica, se han ido asentando con el tiempo. Algunos puertos incluso cuentan con una ocupación doble. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Los puertos bien conocidos y registrados más importantes son: Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Los puertos bien conocidos y registrados más importantes son: Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Los puertos bien conocidos y registrados más importantes son: Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Los puertos con un número superior al 49152 son puertos dinámicos. Estos puertos no los asigna la IANA. Cada aplicación puede usar un puerto de este tipo de manera local o dinámica, por lo que es probable que alguno de estos puertos ya esté ocupado. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Los puertos como IP, IMAP, SMTP y POP3 facilitan la comunicación y el envío de emails … por ejemplo. Alfonso Antolínez García ® Computación en Sistemas Distribuidos Ciclo de vida de un socket Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Creación: apertura del socket. Lectura: recibir información (InputStream). Escritura: enviar información (OutputStream). Cierre: cierre del socket. Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Alfonso Antolínez García ® Computación en Sistemas Distribuidos Fases típicas de una comunicación entre cliente y servidor Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java A continuación, se presentan las fases típicas de una comunicación entre cliente y servidor: Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Tanto clientes como servidores pueden usar distintos lenguajes de programación. Lo importante es conocer las IPs y puertos de conexión. Esto permite infinitas aplicaciones y escenarios de uso distintos. En entornos con muchas conexiones concurrentes, como los servidores web o las bbdd, cada conexión usa un socket único. Alfonso Antolínez García ® Computación en Sistemas Distribuidos Funciones esenciales de los sockets Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Las más usadas están send(), recv(), bind(), listen() y accept(). Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java send(): Envía datos a través de un socket. Es esencial en apps de chat, donde se comparten datos constantemente. recv(): Recibe datos de otro socket. Importante para recibir info del servidor o otros clientes. bind(): Asocia un socket a una dirección y puerto locales. Los servidores lo usan para escuchar conexiones entrantes. listen(): Prepara el socket para escuchar conexiones. Se usa después de bind() del lado del servidor. accept(): Acepta conexiones entrantes, creando un nuevo socket para comunicarse con el cliente. Alfonso Antolínez García ® Computación en Sistemas Distribuidos Conexiones bloqueantes y no bloqueantes Alfonso Antolínez García ® Programación Concurrente y Distribuida Sockets en Java Con conexiones bloqueantes, el socket espera a que termine una operación. Esto puede hacer que algunas aplicaciones sean lentas. Las conexiones no bloqueantes dejan que el programa siga trabajando. Así, mientras espera respuestas, la aplicación puede ser más reactiva. Alfonso Antolínez García ® Programación Concurrente y Distribuida ¡Muchas Gracias! ¿Preguntas? Alfonso Antolínez García ® Computación en Sistemas Distribuidos Sockets en Java

Use Quizgecko on...
Browser
Browser