100% encontró este documento útil (1 voto)
76 vistas23 páginas

Dam M09 T03 PDF

Este documento describe la programación de comunicaciones en red. Explica los sistemas distribuidos, la comunicación entre aplicaciones mediante mensajes, paquetes y protocolos, y el modelo cliente-servidor donde los clientes realizan peticiones a los servidores que proporcionan recursos.

Cargado por

inmiana
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
76 vistas23 páginas

Dam M09 T03 PDF

Este documento describe la programación de comunicaciones en red. Explica los sistemas distribuidos, la comunicación entre aplicaciones mediante mensajes, paquetes y protocolos, y el modelo cliente-servidor donde los clientes realizan peticiones a los servidores que proporcionan recursos.

Cargado por

inmiana
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 23

Tema 3.

Programación de comunicaciones en red

Autor: Joan Pou


Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Tema 3: Programación de comunicaciones en red

¿Qué aprenderás? P
A F
• Crear aplicaciones cliente servidor.
K I
• N
LI
Los protocolos de la pila TCP/IP.
• Utilizar la API.NET de Java.
• Programar aplicaciones multiusuario de comunicación.
N O
U M
¿Sabías que…? AL
L E
• El cloud computing es unaIB de las formas de computación

I M
distribuida más utilizadas en la actualidad. Dropbox, Spotify o

PR
Google Docs son ejemplos.
• Dropbox, Spotify o Google Docs son ejemplos de cloud
computing.I M

N de forma única dentro de una red.
Una dirección IP es un código numérico que identifica a una

I Ó
máquina

R S
VE

1
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

3.1. Sistemas distribuidos

Actualmente utilizamos sistemas y dispositivos para escuchar música o ver películas


online. Podemos hacer la compra desde casa, jugar a partidas online con otros usuarios,
acceder a los ficheros y fotos que guardamos en la nube o a los datos en un SGDB. Toda
este proceso de información y de comunicación de nuestros dispositivos solo es posible
utilizando las redes de datos. Por tanto uno de los principales objetivos de las redes es el
de interconectar diversos dispositivos para compartir sus recursos.
F P
IA
Para conseguir esta interconexión de dispositivos se utilizan elementos lógicos
(protocolos de comunicación) y elementos físicos (concentradores, routers,…) permitiendo
K
crear aplicaciones distribuidas cada vez más sencillas y transparentes para los usuarios. Las
N
LI
tres características fundamentales de un sistema distribuido son:
• Debe estar formado por más de un elemento de proceso de información (ordenador,
O
móvil, libro electrónico, servidor…) sin que comparta la memoria con el resto.
N
• Cada elemento del sistema distribuido tiene su propio reloj, por tanto no están
sincronizados entre sí.
U M
AL
• Existe una red de comunicaciones que permite comunicar a todos los elementos entre
sí.

L E
IB
I M
P R
IM
N
I Ó
R S
V E
Un sistema distribuido es un conjunto de equipos independientes que actúan de
forma transparente actuando como un único equipo

2
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

3.2. Comunicación entre aplicaciones

En un sistema distribuido se produce una transferencia de información entre las


diferentes aplicaciones que lo forman. Para que esta transferencia se produzca es
necesario que compartan una misma forma de representar la información, aunque
internamente cada aplicación la represente de una forma diferente.
En todo proceso de comunicación podemos diferenciar una serie de elementos
entre los que podemos destacar:
• Mensaje: Es la información que se transmite entre aplicaciones y se representa por F P
medio de códigos y símbolos.
I A
• Emisor: Es la aplicación encargada de generar y enviar el mensaje.
N K

LI
Receptor: Es la aplicación que recibe el mensaje. En función del sistema distribuido
este receptor puede ser único o múltiple.
• O
Paquete: La información a transmitir se divide en unidades más pequeñas llamadas
N
paquetes que contienen todos los datos necesarios para que la información llegue a su
M
destino sin perderse (dispositivo origen, dispositivo destino, aplicación, servicio,…).
U
AL
• Canal: Es el medio que utiliza el emisor y el receptor para enviar los paquetes.
• Protocolo: Son una serie de especificaciones que definen que papel deben realizar

como lógicos. L E
todos los elementes que intervienen en el sistema de comunicación tanto si son físicos

I B
I M
P R
IM
N
I Ó
R S
V E

3
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

3.3. Cliente Servidor

La arquitectura cliente-servidor es un modelo de aplicación distribuida. Las tareas se


reparten entre los proveedores de recursos o servicios, llamados servidores, y los
demandantes, llamados clientes.
Un cliente realiza peticiones a otro programa, y el servidor, le da respuesta. Esta
idea también se puede aplicar a programas que se ejecutan sobre una sola computadora,
aunque es más ventajoso en una red de ordenadores.

F P
IA
El cliente es el que inicia las solicitudes o peticiones. Tiene, por tanto, un papel

N K
activo en la comunicación. Espera y recibe las respuestas del servidor. Puede conectarse a
varios servidores a la vez. Normalmente, interactúa directamente con los usuarios finales
mediante una interfaz gráfica de usuario.
LI
N O
U M
AL
L E
El servidor al iniciarse, espera a que le lleguen las solicitudes de los clientes.

IB
Desempeña entonces, un papel pasivo en la comunicación. Siempre está a la espera de que
llegue alguna petición. Tras la recepción de una solicitud, la procesa y luego envía la
I M
respuesta al cliente. Por lo general, acepta conexiones desde un gran número de clientes

P R
(en ciertos casos el número máximo de peticiones puede estar limitado)
Como ventajas de este sistema podemos destacar:
• IM
Centralización del control: El acceso, los recursos y los datos son controlados por el

N
servidor impidiendo accesos no autorizados al sistema.

I Ó
Escalabilidad: Se pueden aumentar la cantidad de clientes y servidores por separado.

R

S
Cualquier elemento puede ser mejorado en cualquier momento.
Fácil mantenimiento: Al estar distribuidas las funciones entre varios elementos es

V E posible reemplazar, actualizar o trasladar un servidor, sin que los clientes se afecten o
se afectaran mínimamente.
• La existencia de tecnologías lo suficientemente desarrolladas que aseguran que el
entorno sea fácil de usar, amigable y seguro en las transacciones de información.
Como inconvenientes del modelo cliente servidor tenemos:
• La congestión del tráfico ha sido siempre el principal problema, esto se produce
cuando una gran cantidad de clientes envían peticiones a un mismo servidor.

4
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

• Cuando un servidor está caído las peticiones de los clientes no pueden ser satisfechas,
esto no pasa en otros modelos como por ejemplo en las redes P2P donde los
elementos desempeñan al mismo tiempo el rol de cliente y de servidor.
• El hardware y el software del cliente y del servidor son muy determinantes en el
sistema.

3.4. Protocolos de comunicación

F P
Cuando se produce un intercambio de información entre equipos utilizando una red
I A
es preciso definir una serie de mecanismos que le hagan posible. Por esto motivo la
K
International Standard Organization (ISO) especificó un modelo para describir las redes de
N
LI
comunicación y las partes en que se divide.
El estándar define siete capas, de tal modo que cada una se fundamenta en la

comunicación. N O
anterior, aunque no es necesario utilizar todas ellas para construir nuestro sistema de

M
Cada capa permite que pueda ser modificada internamente sin afectar al resto.
U
AL
Dentro de cada la comunicación se lleva a cabo siguiendo unas reglas y convenciones
predefinidas llamadas comúnmente protocolos. Se conoce como especificación del servicio
al interfaz que permite la comunicación entre las capas adyacentes.

L E
En los sistemas distribuidos, esta organización que contiene todos los elementos

pila de protocolos. I B
hardware y software necesarios para la comunicación se conoce con el nombre de pila IP o

I M
P R
IM
N
I Ó
R S
V E
El protocolo IP es el protocolo estándar de comunicaciones en internet y en la
mayoría de sistemas distribuidos y define una pila de protocolos con las siguientes capas:
red, internet, transporte y aplicación.
• La capa de red está formada por la capa física y la capa de enlace del modelo OSI.. La
capa más baja del sistema de comunicación es la capa física en la que se definen los
elementos físicos como los cables o las tarjetas de red. La capa de enlace incluye los
protocolos de transmisión, de acceso, de recepción de las señales y los controladores
de las tarjetas de red.
5
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

• La capa de internet o nivel IP. Utilizando el protocolo IP (Internet Protocol) gestiona la


comunicación entre los diferentes nodos de la red decidiendo por qué camino se deben
enviar los paquetes para que lleguen a su destino.
• La capa de transporte se encarga de descomponer el mensaje en paquetes, crear el
canal de comunicación y controlar la transmisión entre el emisor y el receptor. En esta
capa se utilizan principalmente dos protocolos de transporte: UDP y TCP.
• La capa de aplicación es donde empieza y acaba todo el proceso de comunicación, lo
componen todas las aplicaciones del sistema distribuido utilizando las capas inferiores.
El proceso para enviar un mensaje entre dos aplicaciones seria el siguiente:
• La capa de aplicación aplicará un formato adecuado a los datos que se tienen que
F P
enviar y junto con la dirección de envío lo pasara a la capa de transporte.
I A
• K
La capa de transporte dividirá en la información en paquetes y añadirá información que
N
LI
facilita el control de la transmisión.
• En la capa de internet se añaden las direcciones origen y destino del mensaje y calcula


la ruta que deben seguir los paquetes para llegar al receptor.

N O
La capa de enlace añade nuevos datos para conseguir que esta información llegue al

• U M
nodo próximo situado en el camino activando todos los elementos físicos necesarios.

AL
Las señales saltaran de nodo en nodo hasta llegar al dispositivo receptor, comprobando
su dirección IP. Esta información subirá a la capa de transporte que verificará que la
información recibida es correcta, y solo en este caso subirá los datos a la capa de

L E
aplicación que las recibirá y actuará en consecuencia.

IB
I M
P R
IM
N
I Ó
R S
V E

6
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

3.5. Protocolos de transporte TCP y UDP

La capa de transporte se implementa solo sobre nodos terminales (origen y destino)


y utiliza principalmente dos protocolos de control: UDP y TCP.
• TCP: Protocolo basado en la conexión, garantiza que los datos enviados desde un extremo
de la conexión llegan al otro extremo y en el mismo orden en que fueron enviados. De lo
contrario, se notifica un error.

• UDP: No está basado en la conexión como TCP. Envía paquetes de datos independientes,
F P
denominados datagramas, de una aplicación a otra; el orden de entrega no es importante
y no se garantiza la recepción de los paquetes enviados. El tamaño máximo del mensaje I A
que se puede enviar es de 64KB.
N K
LI
3.6. API Java.net
N O
U M
Proporciona las clases para la implementación de aplicaciones de red. Las podemos
dividir en dos secciones.
AL
• L E
Una API de bajo nivel, que se ocupa de las abstracciones siguientes:
Las direcciones: Son los identificadores de red, como por ejemplo las


direcciones IP.
I B
• I M
Sockets: Son los mecanismos básicos de comunicación bidireccional de datos.
Interfaces: Describen las interfaces de red.

P R
Una API de alto nivel, que se ocupa de las abstracciones siguientes:

• IM
URI: Representan identificadores de recursos universales.
URLs: Representan los localizadores de recursos universales.
• N
Conexiones: Representa las conexiones al recurso apuntado por URL.

I Ó
R S
3.6.1. Clase InetAddress

VE
Es la abstracción que representa una dirección IP (Internet Protocol). Tiene dos
subclases: Inet4Address para direcciones IPv4 (32 bits) y Inet6Address para direcciones
IPv6 (128 bits), pero en la mayoría de casos no es necesario recurrir a ellas.
La clase InetAddress nos sirve para representar una dirección IP, las instancias de
esta clase no se crean llamando a un constructor, de hecho no tiene constructores, si no
que llamando a los siguientes métodos, los cuales devuelven un objeto de tipo
InetAddress.

7
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

• getLocalHost():Devuelve la dirección IP de la máquina donde se está ejecutando el


programa
• getByName(host): Devuelve la dirección IP de la máquina que se especifica como
parámetro. Este parámetro es un string, el cual puede ser el nombre de la máquina
como un nombre de dominio "google.es", o un string que representa la dirección IP en
su notación decimal "128.196.178.14".
• getAllByName(host): Devuelve un array de objetos de tipo InetAddress. Este método
es útil en caso de que quieras averiguar todas las direcciones IP que tenga asignada una
máquina en particular

F
Los tres métodos anteriores arrojan la excepción UnknowHostException, en caso de P
IA
que el nombre o la dirección de la máquina no se encuentren o no existan en Internet,
deberemos controlar esa excepción al utilizar estos métodos.

N K
LI
En el siguiente ejemplo se muestran las direcciones IP de diversos nombres de
dominio.

N O
U M
AL
L E
IB
I M
P R
3.6.2. Clase URL
IM
N
I Ó
Representa un puntero a un recurso de la Web. Un recurso, puede ser un fichero,
un directorio, una consulta a una base de datos o una búsqueda en internet.

R S En general una URL se divide en varias partes:

V E

Pueden lanzar la excepción MalformedURLException si la URL está mal construida.


No se hace ninguna verificación de que realmente exista la máquina o el recurso en la red.

8
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Algunos métodos:
• getPort():Devuelve el número de puerto de la URL, -1 si no se indica.
• getHost(): Devuelve el nombre de la máquina.
• getQuery(): Devuelve la cadena que se envía a una página para ser procesada (lo que
sigue al signo ?).
• getPath(): Devuelve una cadena con la ruta hacia el fichero desde el servidor y el
nombre completo del fichero.
• getFile(): Devuelve la concatenación de getPath() y getQuery().


getUserInfo(): Devuelve la parte con los datos del usuario de la dirección URL.
InputStream openStream(): Abre una conexión al objeto URL y devuelve un
F P
InputStream para la lectura de esa conexión.
I A
• URLConnection openConnection(): Devuelve un objeto URLConnection que representa
N K
LI
la conexión a un objeto remoto referenciado por la URL.

O
En el siguiente ejemplo vemos el uso de los constructores definidos.
N
U M
AL
L E
I B
I M
P R
IM
N
I Ó
R S
VE

9
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

3.6.3. Clase URLConnection

Es una clase abstracta que contiene métodos que permiten la comunicación entre
aplicaciones y una URL. Para conseguir un objeto de este tipo se invoca al método
openConnection(), con ello obtenemos una conexión al objeto URL referenciado.

Las instancias de esta clase se pueden utilizar tanto para leer como para escribir al
recurso referenciado por la URL. Puede lanzar la excepción IOException.
Algunos métodos:
• InputStream getInputStream():Devuelve un objeto InputStream para leer datos de
esta conexión.
F P
• OutputStream getOutputStream():Devuelve un objeto OutputStream para escribir
IA

datos en esta conexión.
N K
LI
setDoInput(boolean b): Permite que el usuario reciba datos de la URL si el parámetro b
es true (por defecto)

• connect(): Abre una conexión al recurso remoto.
N O
setDoOutput(boolean b): Permite que el usuario envíe datos si el parámetro b es true.



U M
getContentLength(): Devuelve el valor del campo de cabecera content-length.
getContentType(): Devuelve el valor del campo de cabecera content-type.

AL
• getDate():Devuelve el valor del campo de cabecera date.
• getLastModified():Devuelve el valor del campo de cabecera last-modified.
• getURL(): Devuelve la dirección URL.
L E
IB
En el siguiente ejemplo, a partir de la dirección https://www.google.com/gmail/, se

I M
crea un objeto URL, se invoca al método openConnection para crear una conexión y se
obtiene un URLConnection. Después se abre un stream de entrada sobre esa conexión

P R
mediante el método getInputStream. Y obtenemos el código fuente de la página web.

IM
N
I Ó
R S
V E

10
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

F P
I A
N K
LI
3.7. Sockets N O
U M
AL
La documentación oficial de java define los sockets como el punto final de la

L E
comunicación bidireccional entre dos programas que se ejecutan en la red.
Nos proporciona una abstracción de la pila de protocolos, estarían situados en la
I B
capa de transporte y representan un punto de acceso a las capas inferiores del sistema.

I M
Para establecer una comunicación entre dos aplicaciones, éstas deben crear sus

P R
respectivos sockets y conectarlos entre sí. Una vez conectados, se crea un canal privado a
través de la red que permite a las aplicaciones enviar y recibir mensajes en los extremos.

IM
N
I Ó
R S
V E
Los sockets se asocian a una dirección IP y a un puerto de forma que sea posible
enviar información a través de la red utilizando alguno de los protocolos de transporte TCP
o UDP.
Si utilizamos el protocolo UDP hablaremos de sockets no orientados a la conexión y
utilizaremos el protocolo TCP cuando los sockets sean orientados a la conexión.

11
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

3.7.1. Sockets orientados a la conexión: TCP

Un socket orientado a la conexión se utiliza para comunicarse siempre con el mismo


receptor manteniendo el canal de comunicación abierto entre ambas partes hasta que se
termina la conexión. Destacamos las siguientes características:
• Son orientados a conexión.
• Utilizan el protocolo TCP.
• Se llaman sockets stream.
• Una parte ejerce la función de proceso cliente y la otra de proceso servidor.
F P

A
Antes de empezar la transmisión se deberá hacer una petición de conexión que
la otra parte deberá aceptar. I

N K
Se reservará un puerto de red exclusivamente para la transmisión de datos en
cualquier de los dos sentidos.
LI
N O
Para trabajar con sockets stream java dispone de dos clases: java.net.Socket para
trabajar con sockets stream de cliente y java.net.ServerSocket para trabajar con sockets
stream de servidor.

U
Los métodos más importantes de la clase ServerSocket son:M

AL
ServerSocket(host, puerto): Sirve para crear sockets stream de Servidor, constructor
básico de la clase. Se le pueden pasar como argumentos la IP y el puerto que deseamos


asignar al servidor.
L E
• IB
bind(socketadress): Asigna una ip y un puerto determinado al socket.
accept(): Escucha y acepta conexiones socket de clientes. Devuelve un objeto de la

I M
clase Socket conectado al cliente.
• close(): cierra el socket.
P R
La clase Socket se utiliza para crear y trabajar con sockets stream de clientes. Los
IM
métodos más importantes son:

N
Socket(): Sirve para crear sockets stream de cliente, constructor básico de la clase.


Ó
connect(addr): Establece la conexión con el servidor en una ip y puerto determinado.
I
R S
getInputStream(): Se utiliza para las operaciones de lectura obteniendo un objeto de la
clase InputStream.

V E • getOutputStream(): Se utiliza para las operaciones de escritura obteniendo un objeto


de la clase OutputStream.
• close(): cierra el socket.
Utilizando los sockets stream uno de los dispositivos actuará como servidor y el otro
tendrá el papel de cliente. Para realizar está proceso de intercambio de información se
debe seguir una secuencia de pasos predeterminada.
El programa servidor crea un socket de servidor definiendo un puerto, mediante el
método ServerSocket(port), y espera mediante el método accept() a que el cliente solicite
la conexión.

12
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Cuando el cliente solicita una conexión, el servidor abrirá la conexión al socket con
el método accept().
El cliente establece una conexión con la máquina host a través del puerto
especificado mediante el método Socket(host, port).

F P
I A
N K
LI
N O
U M
AL
El cliente y el servidor se comunican con utilizando los objetos InputStream y
OutputStream. El cliente escribe los mensajes en el OutputStream asociado al socket y el

L E
servidor leerá los mensajes del cliente de InputStream. Igualmente el servidor escribirá los
mensajes al OutputStream y el cliente los leerá del InputStream. Finalmente cerraran la
conexión.
I B
I M
En el siguiente ejemplo vemos cómo actúan estas clases. El cliente se conecta al
servidor y va enviando mensajes hasta que escribe la palabra FIN. Los mensajes se
visualizan en el servidor.
P R
IM
N
I Ó
R S
VE

13
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

F P
IA
N K
LI
N O
U M
Ejecución del ejemplo: AL
L E
IB
I M
P R
I M
N
3.7.2. Sockets no orientados a la conexión: UDP

I Ó
R S Los sockets no orientados a conexión utilizan el protocolo UDP para enviar
mensajes, llamados datagramas, sobre canales temporales. Sus principales características

VE
son:
• Utilizan el protocolo de transporte UDP.
• No existe diferencia entre proceso cliente y proceso servidor.
• No son fiables y no garantizan el orden de llegada correcto de los mensajes.
• Son más simples y eficientes que los TCP pero no está garantizada la entrega de los
paquetes.

14
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Para trabajar con sockets datagram utilizamos la clase DatagramSocket. Sus


métodos más importantes son:
• DatagramSocket(socketAddress): Sirve para crear sockets datagram. Se le pueden
pasar como argumentos la IP y el puerto.
• send(DatagramPacket): Envía un datagrama. El argumento paquete contiene el
mensaje y su destino.
• receive(DatagramPacket): Recibe un datagrama. El paquete contiene el mensaje, la
longitud y el origen.
• close(): cierra el socket.

F P
En los sockets UDP no se establece conexión, por tanto podemos considerar que el
I
servidor es el que espera un mensaje y responde; y el cliente el que inicia la comunicación.A
N K
LI
Ambos dispositivos si desean comunicarse necesitan saber en qué ip y puerto está
escuchando el otro. El proceso a seguir es el siguiente:

N O
U M
AL
L E
I B
I M
P R
IM
• N
El servidor crea un socket asociado a un puerto local para escuchar peticiones de
I Ó
clientes. Permanece a la espera de recibir peticiones.

R• S
El cliente creará un socket para comunicarse con el servidor. Para enviar datagramas

VE necesita conocer su IP y el puerto por el que escucha. Utilizará el método send() del
socket para enviar la petición en forma de datagrama.
• El servidor recibe las peticiones mediante el método receive() del socket. En el
datagrama va incluido además del mensaje, el puerto y la IP del cliente emisor de la
petición; lo que le permite al servidor conocer la dirección del emisor del datagrama.
Utilizando el método send() del socket puede enviar la respuesta al cliente emisor.
• El cliente recibe la respuesta del servidor mediante el método receive() del socket.
• El servidor permanece a la espera de recibir más peticiones.

15
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

En el siguiente ejemplo dos aplicaciones se envían mensajes utilizando sockets


datagram.

F P
IA
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
V E

16
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

3.7.3. Conexión de múltiples clientes

Para conectar múltiples clientes a un servidor podemos utilizar hilos. Creamos un


único servidor con la clase ServerSocket y se invoca al método accept() para esperar las
peticiones de conexión de los clientes.
Cuando un cliente se conecta, el método accept() devuelve un objeto Socket, éste
se usará para crear un hilo cuya misión es atender a este cliente.
Después se vuelve a invocar a accept() para esperar a un nuevo cliente;
habitualmente la espera de conexiones se hace dentro de un bucle infinito.

F P
I A
N K
LI
N O
U M
AL
L E
I B
I M
R
3.7.4. La clase MulticastSocket
P
IM
La clase MulticastSocket es útil para enviar paquetes a múltiples destinos
simultáneamente. Para poder recibir estos paquetes es necesario establecer un grupo
N
multicast, que es un grupo de direcciones IP que comparten el mismo número de puerto.

I Ó
Cuando se envía un mensaje a un grupo de multicast, todos los que pertenezcan a

R S
ese grupo recibirán el mensaje. La pertenencia al grupo es transparente al emisor, es decir,
el emisor no conoce el número de miembros del grupo ni sus direcciones IP.

VE Un grupo multicast se especifica mediante una dirección IP de clase D y un número


de puerto UDP estándar.
Los métodos más importantes a parte del send y receive de esta clase son:
• MulticastSocket(puerto): Crea un socket multicast en el puerto especificado.
• joinGroup (InetAdress): Permite al socket multicast unirse al grupo.
• leaveGroup (InetAdress): Permite al socket multicast abandonar al grupo.

17
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Recursos y enlaces
• Api Java.net

F P
IA
N K
Conceptos clave LI
• La pila de protocolos TCP/IP se divide en 4 capas.
N O


Los sockets son canales de comunicación entre aplicaciones.
Los sockets stream están orientados a conexión.
U M
AL
• Los sockets datagram no están orientados a conexión.

L E
IB
I M
P R
IM
N
I Ó
R S
V E

18
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Test de autoevaluación

De los sockets stream podemos decir.


a) No son orientados a conexión.
b) Son orientados a conexión.
c) No podemos garantizar que los mensajes lleguen.
d) No podemos garantizar que los mensajes lleguen en orden.
F P
El protocolo UDP permite enviar mensajes de longitud: I A
a) Variable de hasta 64 KB.
N K
b) Fija de 4KB.
LI
c) Fija de 64 KB.
d) Variable sin límite. N O
U M
AL
La clase socket sirve:
e) Crear servidores en servicios TCP/IP.
f) Crear servidores en servicios UDP/IP.
L E
g) Crear clientes en servicios TCP/IP.
I B
I M
h) Crear clientes en servicios UDP/IP.

P R
Ponlo en práctica IM
N
I Ó
R S
Actividad 1

VE Realiza una aplicación cliente servidor utilizando sockets stream con la siguiente
funcionalidad. El cliente envía mensajes al servidor hasta que tecleemos la palabra FIN. El
servidor recibe el mensaje y lo escribe al revés por la pantalla. La palabra FIN no se procesa
y finaliza la ejecución.

19
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

SOLUCIONARIOS

Test de autoevaluación

De los sockets stream podemos decir.


e) No son orientados a conexión.
f) Son orientados a conexión.
g) No podemos garantizar que los mensajes lleguen. F P
I A
h) No podemos garantizar que los mensajes lleguen en orden.

N K
El protocolo UDP permite enviar mensajes de longitud: LI
i) Variable de hasta 64 KB.
j) Fija de 4KB. N O
k) Fija de 64 KB.
U M
AL
l) Variable sin límite.

La clase socket sirve:


L E
m) Crear servidores en servicios TCP/IP.
IB
I M
n) Crear servidores en servicios UDP/IP.

P R
o) Crear clientes en servicios TCP/IP.
p) Crear clientes en servicios UDP/IP.
IM
N
I Ó
Ponlo en práctica
R S
E
V Actividad 1
Realiza una aplicación cliente servidor utilizando sockets stream con la siguiente
funcionalidad. El cliente envía mensajes al servidor hasta que tecleemos la palabra FIN. El
servidor recibe el mensaje y lo escribe al revés por la pantalla. La palabra FIN no se procesa
y finaliza la ejecución.

20
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Solución Actividad 1

Clase Servidor.

F P
I A
N K
LI
N O
U M
AL
L E
I B
I M
P R
IM
N
I Ó
R S
V E

21
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 3. Programación de comunicaciones en red

Clase Cliente

F P
IA
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
V E

22

También podría gustarte