PDF de programación - Sockets en Java

Imágen de pdf Sockets en Java

Sockets en Javagráfica de visualizaciones

Publicado el 10 de Junio del 2021
378 visualizaciones desde el 10 de Junio del 2021
60,5 KB
13 paginas
Creado hace 19a (21/03/2005)
1 SOCKETS EN JAVA
La programación en red siempre ha sido dificultosa, el programador debía de conocer la
mayoría de los detalles de la red, incluyendo el hardware utilizado, los distintos niveles en que
se divide la capa de red, las librerías necesarias para programar en cada capa, etc.
Pero, la idea simplemente consiste en obtener información desde otra maquina, aportada por
otra aplicación software. Por lo tanto, de cierto modo se puede reducir al mero hecho de leer y
escribir archivos, con ciertas salvedades.
El sistema de Entrada/Salida de Unix sigue el paradigma que normalmente se designa como
Abrir-Leer-Escribir-Cerrar. Antes de que un proceso de usuario pueda realizar operaciones de
entrada/salida, debe hacer una llamada a Abrir (open) para indicar, y obtener los permisos del
fichero o dispositivo que se desea utilizar.
Una vez que el fichero o dispositivo se encuentra abierto, el proceso de usuario realiza una o
varias llamadas a Leer (read) y Escribir (write), para la lectura y escritura de los datos.
El proceso de lectura toma los datos desde el objeto y los transfiere al proceso de usuario,
mientras que el de escritura los transfiere desde el proceso de usuario al objeto. Una vez
concluido el intercambio de información, el proceso de usuario llamará a Cerrar (close) para
informar al sistema operativo que ha finalizado la utilización del fichero o dispositivo.
En Unix, un proceso tiene un conjunto de descriptores de entrada/salida desde donde leer y por
donde escribir. Estos descriptores pueden estar referidos a ficheros, dispositivos, o canales de
comunicaciones sockets.
El ciclo de vida de un descriptor, aplicado a un canal de comunicación (por ejemplo, un socket),
está determinado por tres fases :

- Creación, apertura del socket
- Lectura y Escritura, recepción y envío de datos por el socket
- Destrucción, cierre del socket

La interface IPC en Unix-BSD está implementada sobre los protocolos de red TCP y UDP. Los
destinatarios de los mensajes se especifican como direcciones de socket; cada dirección de
socket es un identificador de comunicación que consiste en una dirección Internet y un número
de puerto.
Las operaciones IPC se basan en pares de sockets. Se intercambian información transmitiendo
datos a través de mensajes que circulan entre un socket en un proceso y otro socket en otro
proceso. Cuando los mensajes son enviados, se encolan en el socket hasta que el protocolo de
red los haya transmitido. Cuando llegan, los mensajes son encolados en el socket de recepción
hasta que el proceso que tiene que recibirlos haga las llamadas necesarias para recoger esos
datos.
El lenguaje Java fue desarrollado por la empresa Sun MicroSystems hacia el año 1990,
mediante la creación de un grupo de trabajo en cuya cabeza estaba James Gosling. Este grupo
de trabajo fue ideado para desarrollar un sistema de control de electrodomésticos y de PDAs o
asistentes personales (pequeños ordenadores) y que además tuviese la posibilidad de
interconexión a redes de ordenadores. Todo ello implicaba la creación de un hardware
polivalente, un sistema operativo eficiente (SunOS) y un lenguaje de desarrollo (Oak). El
proyecto concluyó dos años más tarde con un completo fracaso que condujo a la disolución del
grupo.

Sistemas Distribuidos::Sockets en Java

EUI-SG/INFOR.UVA.ES

1

Pero el desarrollo del proyecto relativo al lenguaje oak siguió adelante gracias entre otras
cosas a la distribución libre del lenguaje por Internet mediante la incipiente, por aquellos años,
World Wide Web. De esta forma el lenguaje alcanzó cierto auge y un gran número de
programadores se encargaron de su depuración así como de perfilar la forma y usos del
mismo.
El nombre de Java, surgió durante una de las sesiones de brain storming que se celebraban
por el equipo de desarrollo del lenguaje. Hubo que cambiar el nombre debido a que ya existía
otro lenguaje con el nombre de oak.
Sun MicroSystems lanzó las primeras versiones de Java a principios de 1995, y se han ido
sucediendo las nuevas versiones durante estos últimos años, fomentando su uso y
extendiendo las especificaciones y su funcionalidad.
Una de las características más importantes de Java es su capacidad y, a la vez, facilidad para
realizar aplicaciones que funcionen en red. La mayoría de los detalles de implementación a
bajo nivel están ocultos y son tratados de forma transparente por la JVM (Java Virtual
Machine). Los programas son independientes de la arquitectura y se ejecutan indistintamente
en una gran variedad de equipos con diferentes tipos de microprocesadores y sistemas
operativos.
2 CLASES PARA LAS COMUNICACIONES DE RED EN JAVA: java.net
En las aplicaciones en red es muy común el paradigma cliente-servidor. El servidor es el que
espera las conexiones del cliente (en un lugar claramente definido) y el cliente es el que lanza
las peticiones a la maquina donde se está ejecutando el servidor, y al lugar donde está
esperando el servidor (el puerto(s) específico que atiende). Una vez establecida la conexión,
ésta es tratada como un stream (flujo) típico de entrada/salida.
Cuando se escriben programas Java que se comunican a través de la red, se está
programando en la capa de aplicación. Típicamente, no se necesita trabajar con las capas TCP
y UDP, en su lugar se puede utilizar las clases del paquete java.net. Estas clases
proporcionan comunicación de red independiente del sistema.
A través de las clases del paquete java.net, los programas Java pueden utilizar TCP o UDP
para comunicarse a través de Internet. Las clases URL, URLConnection, Socket, y
SocketServer utilizan TCP para comunicarse a
la Red. Las clases
DatagramPacket y DatagramServer utilizan UDP.
TCP proporciona un canal de comunicación fiable punto a punto, lo que utilizan para
Internet. Las clases Socket y
comunicarse
ServerSocket del paquete java.net proporcionan un canal de comunicación independiente
del sistema utilizando TCP, cada una de las cuales implementa el lado del cliente y el servidor
respectivamente.
Así el paquete java.net proporciona, entre otras, las siguientes clases, que son las que se
verán con detalle:

las aplicaciones cliente-servidor en

través de

- Socket: Implementa un extremo de la conexión TCP.
- ServerSocket: Se encarga de implementar el extremo Servidor de la conexión en la
- DatagramSocket: Implementa tanto el servidor como el cliente cuando se utiliza UDP.
- DatagramPacket: Implementa un datagram packet, que se utiliza para la creación de

que se esperarán las conexiones de los clientes.

servicios de reparto de paquetes sin conexión.

Sistemas Distribuidos::Sockets en Java

EUI-SG/INFOR.UVA.ES

2

- InetAddress: Se encarga de implementar la dirección IP.

La clase Socket del paquete java.net es una implementación independiente de la
plataforma de un cliente para un enlace de comunicación de dos vías entre un cliente y un
servidor. Utilizando la clase java.net.Socket en lugar de tratar con código nativo, los
programas Java pueden comunicarse a través de la red de una forma independiente de la
plataforma.
El entorno de desarrollo de Java incluye un paquete, java.io, que contiene un juego de
canales de entrada y salida que los programas pueden utilizar para leer y escribir datos. Las
clases InputStream y OutputStream del paquete java.io son superclases abstractas que
definen el comportamiento de los canales de I/O de tipo stream de Java. java.io también
incluye muchas subclases de InputStream y OtputStream que implementan tipos
especificos de canales de I/O.
2.1 DATAGRAM SOCKET (Servicio sin Conexión)
Es el más simple, lo único que se hace es enviar los datos, mediante la creación de un socket y
utilizando los métodos de envío y recepción apropiados.
Se trata de un servicio de transporte sin conexión. Son más eficientes que TCP, pero no está
garantizada la fiabilidad: los datos se envían y reciben en paquetes, cuya entrega no está
garantizada; los paquetes pueden ser duplicados, perdidos o llegar en un orden diferente al
que se envió.
El protocolo de comunicaciones con datagramas UDP, es un protocolo sin conexión, es decir,
cada vez que se envíen datagramas es necesario enviar el descriptor del socket local y la
dirección del socket que debe recibir el datagrama. Como se puede ver, hay que enviar datos
adicionales cada vez que se realice una comunicación.

public class java.net.DatagramSocket extends java.lang.Object
A) Constructores :
public DatagramSocket () throws SocketException
Se encarga de construir un socket para datagramas y de conectarlo al primer puerto disponible.
public DatagramSocket (int port) throws SocketException
Ídem, pero con la salvedad de que permite especificar el número de puerto asociado.
public DatagramSocket (int port, InetAddress ip) throws SocketException
Permite especificar, además del puerto, la dirección local a la que se va a asociar el socket.
B) Métodos :
public void close()
Cierra el socket.
protected void finalize()
Asegura el cierre del socket si no existen más referencias al mismo.
public int getLocalPort()
Retorna el número de puerto en el host local al que está conectado el socket.
public void receive (DatagramPacket p) throws IOException
Recibe un DatagramPacket del socket, y llena el búfer con los datos que recibe.
public void send (DatagramPacket p) throws IOException
Envía un DatagramPacket a través del socket.

2.2 DATAGRAM PACKET
Un DatagramSocket
  • Links de descarga
http://lwp-l.com/pdf19292

Comentarios de: Sockets en Java (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad