0% encontró este documento útil (0 votos)
34 vistas9 páginas

4 - Servicios

Cargado por

unai san juan
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
0% encontró este documento útil (0 votos)
34 vistas9 páginas

4 - Servicios

Cargado por

unai san juan
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

Unidad Didáctica 4:

GENERACIÓN DE

SERVICIOS EN RED
4. GENERACIÓN DE SERVICIOS EN RED

Una vez vistas las comunicaciones en Java a través de sockets podemos utilizar
dicho conocimiento para dar un paso más allá y acceder a servicios de red
habituales. En las siguientes secciones desglosamos el funcionamiento de los
protocolos y proporcionamos algunas clases básicas para realizar dichos accesos.

4.1 Protocolos estándar de comunicación en red a nivel de aplicación

El nivel más alto de la pila IP lo componen las aplicaciones que forman el sistema
distribuido. Estas aplicaciones, al igual que en el resto de niveles, ofrecen una
interfaz de servicio para que los usuarios las usen, y disponen de un protocolo de
nivel de aplicación que gobierna las comunicaciones entre ellas. La mayoría de
aplicaciones distribuidas más comunes se ubican en este nivel como las páginas
web, el mail,…

Se define protocolo de nivel de aplicación como el conjunto de reglas que gobiernan


la interacción entre los diferentes elementos de una aplicación distribuida. A la hora
de desarrollar un servicio distribuido, definir este protocolo es uno de los pasos
fundamentales. En una aplicación cliente/servidor este protocolo especifica cómo se
realiza la interacción entre el servidor y los clientes. A su vez, los diferentes
elementos de una aplicación cliente/servidor se pueden ver como sistemas
independientes, con su estructura y función. En este sentido, el servidor es la pieza
clave ya que es la que proporciona el servicio deseado a los clientes. Su estructura
estará formada por los componentes software con los que está programado. Su
función será aquella que realiza para los clientes, y su servicio el procedimiento
mediante el cual la realiza. El protocolo de nivel de aplicación define cómo se
interactúa con el cliente y es la interfaz de servicio del servidor.

FTP (File Transfer Protocol)

FTP es un protocolo de nivel de aplicación diseñado para la transferencia de


archivos a través de una red de comunicaciones. Usa el protocolo de transporte TCP
(sockets stream) para establecer una canal de comunicación entre el cliente y el
servidor. Usa el puerto21.
HTTP (HyperText Transfer Protocol)/HTTPS

HTTP es, probablemente, el protocolo más importante del nivel de aplicación. La


mayoría de tráfico que se realiza en la WWW utiliza este protocolo para controlar la
transferencia de información entre las diferentes
aplicaciones implicadas. Así, este protocolo permite la
transmisión de documentos de hipertexto entre
diferentes aplicaciones ubicadas dentro de una red.

Como el resto de protocolos de aplicación, sigue el


modelo cliente/servidor, y gestiona el paso de mensajes
por el mecanismo de petición/respuesta. Por defecto usa
el puerto 80. Algunos servidores HTTP implementan
mecanismos para almacenar el estado de la sesión (es lo
que hoy en día conocemos como cookies).

HTTPS, es la versión segura del protocolo HTTP, ya que cifra toda la información
intercambiada entre cliente y servidor. El puerto que utiliza es el 443.

No es necesario conocer en profundidad el protocolo HTTP para desarrollar


aplicaciones que realicen comunicaciones en red, pero si es necesario conocer los
tipos de peticiones qu se pueden realizar.

Método Descripción

GET Solicita la recuperación de un recurso. Una petición HTTP que


utiliza este método recupera una entidad alojada en el servidor.

POST Este método se utiliza para crear una entidad alojada en el


servidor.

PUT Este método se utiliza para crear o actualizar una entidad


alojada en el servidor si esta ya existía previamente.

DELETE Elimina una entidad alojada en el servidor.


POP3

Está diseñado para que las aplicaciones clientes de e-mail, accedan a los mensajes
alojados en los servidores de correo electrónico. La mayoría de servidores
comerciales de e-mail soportan este protocolo.

POP3 se basa en el protocolo TCP (sockets stream) y usa


por defecto el puerto 110 para las conexiones sin cifrar y el
puerto 995 para las cifradas.

SMTP (Simple Mail Transfer Protocol)

Es el protocolo de aplicación estándar para el envío de mensajes correo electrónico


en Internet. Todos los mails que circulan en la red es debido a él. Se basa en el
protocolo de transporte TCP (sockets stream) y usa el puerto 25 por defecto.

Otros Protocolos de nivel de aplicación importantes

 DHCP (Dynamic Host Configuration Protocol): Asignación dinámicas de las


direcciones IP y de los parámetros de configuración máquinas dentro de una
red. Usa el puerto 67 por defecto.

 DNS (Nomain Name Service): Para localizar direcciones IP a partir de


nombre simbólicos. Usa el puerto 53 por defecto.

 TELNET: Permite acceder a través de un terminal a un ordenador remoto.


Utiliza el puerto 23.

 SSH: Igual que Telnet pero con comunicación cifrada. Puerto 22.
 LDAP: Proporciona una estructura jerárquica, ordenada y distribuida de
información, así como las herramientas a la misma. Se suele utilizar para
almacenar la información referente al acceso a los sistemas. Puerto utilizado
por defecto es el 389.

4.2. Técnicas avanzadas de programación de aplicaciones distribuidas

Hoy día, existen multitud de librerías en la gran mayoría de los lenguajes de


programación con los protocolos ya desarrollados, estando al alcance de todos, la
implementación de sus aplicaciones particulares.

Clases y librerías para la creación de servicios en red en java


 [Link]
Representa una URL, una referencia a un recurso de la web.
En el siguiente código se muestra la construcción de un objeto de esta clase.
URL url=new URL([Link]
Si la web indicada en el constructor no está correctamente formada, lanzara
la excepción MalformedURLException.

Método Descripción

openConnection Proporciona una conexión(objeto URLConecction a partir


del recurso representado en la URL.

 [Link]
Esta clase abstracta es la superclase de todas las clases que representan un
enlace de comunicación entre la aplicación y una URL.
Las instancias de esta clase permiten leer y escribir en el recurso
referenciado por la URL.
HttpURLConnection es la subclase mas relevante.

Método Descripción

getByName Método estático que proporciona la


dirección IP de un host a partir de
su nombre

getLocalHost Método estático que proporciona la


dirección IP del host local

getHostAddress Proporciona la dirección IP del host

getHostName Proporciona el alias del host

getAddress Proporciona la dirección IP del host


como un array de bytes.

getCanonicalHostName Proporciona el nombre del host

getInputStream Proporciona un nombre de lectura

getOutputStream Proporciona un stream de escritura

El siguiente código de ejemplo establece una conexión con un recurso de la web


y se lee su contenido:
URL u = new URL("[Link]

URLConnection urlconnect = [Link]();

InputStream stream = [Link]();


int i;

while ((i = [Link]()) != -1) {

[Link]((char)i);
}

 [Link]
Esta clase proporciona los mecanismo para gestionar una conexión HTTP.

Método Descripción

Disconnect Desconecta la conexión

getResponseCode Proporciona el código de retorno


HTTP enviado por el servidor

setRequestMethod Proporciona el método de petición

Contiene también las constantes que representan los códigos de estado del
protocolo HTTP, como por ejemplo,
HttpsURLConnection.HTTP_OK
Que tiene el valor entero 200 y que significa que la petición se ha realizado
correctamente.
 [Link]
Esta clase abstracta permite realizar peticiones Http y obtener sus
respuestas. Las instancias han de ser creadas a través de un builder u
objeto de instanciación.
Principales métodos de HttpClient.

Método Descripción

newBuilder Crea un builder(objeto de la interfaz


[Link])

Send Envía la petición HTTP y devuelve una instancia de


HttpResponse. Recibe como parámetro además de la
petición, un objeto de la clase HttpResponse.
BodyHandlers, encargado de gestionar el contenido de
la respuesta de la petición.
Métodos principales de [Link]

Métodos Descripción

Build Proporciona el objeto HttpClient con


la configuración proporcionada.

followsRedirect Proporciona mecanismos para


determinar como debe comportarse
la petición frente a las redirecciones
del servidor.

Version Permite especificar la versión del


protocolo Http

 [Link]
Clase abstracta que representa una petición HTTP. Las instancias se
configuran y crean a través de un constructor o builder. Este constructor se
obtiene a través del método estático newBuilder de la propia clase al que se
le indicaran el método de HTTP a utilizar, los parámetros de la petición o el
tiempo limite de espera entre otros parámetros de configuración.
Método mas relevante de HttpRequest

Métodos Descripción

newBuilder Método estático que crea un


builder(objeto de la interfaz
[Link])

Métodos mas relevante de [Link]

Métodos Descripción

build Proporciona el objeto HttpClient con


la configuración proporcionada.

DELETE Asigna el método DELETE al builder.

GET Asigna el método GET al builder

header Permite añadir un par parámetro-


valor a la petición.

headers Permite añadir pares de parámetro-


valor a la petición.

POST Asigna el método POST al builder

PUT Asigna el método PUT al builder.


setHeader Permite asignar un par clave-valor a
la petición

Timeout Permite determinar un tiempo límite


para la petición

uri Asigna la URI a la petición

version Permite especificar la versión del


protocolo HTTP.

 [Link]
Interfaz que representa la respuesta de una petición HTTP. Las instancias de
esta interfaz no se crean directamente, sino que son proporcionadas por el
método send de la clase HttpClient
Método mas importante:

Métodos Descripción

statusCode Proporciona el código de estado de la


petición HTTP.

La clase HttpResponse permite obtener instancias de la interfaz funcional


[Link]. Dichas instancias son utilizadas como parámetros en la
llamada al método send de HttpClient y determinan la manera en la que va a
procesarse el cuerpo de la respuesta de la petición Http.
Dispone de diversos métodos estáticos para la obtención de las instancias de
BodyHandler, siendo los mas relevantes:

Métodos Descripción

ofByteArray Método estático. Devuelve un objeto


de tipo BodyHandler<byte[]>

ofFile Método estático. Devuelve un objeto


de tipo BodyHandler<Path>

ofInputStream Método estático. Devuelve un objeto


de tipo BodyHandler<InputStream>

ofString Método estático. Devuelve un objeto


de tipo BodyHandler<String>

La interfaz BodyHandler solo dispone de un único método,apply,que se invoca de


manera automática cuando se utiliza. En función del tipo de clase utilizado este
método realizara una acción u otra.
 JavaMail
El API JavaMail proporciona un entrono independiente del protocolo y de la
plataforma para la creación de aplicaciones de mensajería a través del correo
electrónico.
Algunas de las clases mas importantes:

Clase Descripcion

[Link] Representa una carpeta de mensajes


IMAP. Hereda de [Link]

[Link] Representa una carpeta de mensajes


POP3. Hereda de [Link]

[Link] Clase abstracta que representa una


dirección de correo electrónico.

[Link] Clase abstracta que representa una


carpeta de mensajes.

[Link] Clase abstracta que representa un


mensaje de correo electrónico.

[Link] Representa una sesión de correo


electrónico

También podría gustarte