PDF de programación - Programación con Sockets en Java - Laboratorio de Redes de Comunicaciones

Imágen de pdf Programación con Sockets en Java - Laboratorio de Redes de Comunicaciones

Programación con Sockets en Java - Laboratorio de Redes de Comunicacionesgráfica de visualizaciones

Publicado el 5 de Julio del 2017
807 visualizaciones desde el 5 de Julio del 2017
734,7 KB
63 paginas
Creado hace 15a (09/10/2008)
Laboratorio de Redes de Comunicaciones

Programación con Sockets en Java

Sockets orientados a conexión

Sockets no orientados a conexión

UNIVERSIDADE DA CORUÑA

Java: Distribuido

UNIVERSIDADE DA CORUÑA

• Java se ha construido con extensas capacidades de 

interconexión TCP/IP. Existen librerías de rutinas para 
acceder e interactuar con protocolos como http y ftp. Esto 
permite a los programadores acceder a la información a 
través de la red con tanta facilidad como a los ficheros 
locales.

• Java en sí no es distribuido, sino que proporciona las 

librerías y herramientas para que los programas puedan ser 
distribuidos, es decir, que se corran en varias máquinas, 
interactuando.

Octubre 2007

Laboratorio de Redes de Comunicaciones

2

Java: Distribuido

UNIVERSIDADE DA CORUÑA

• Pensado para su aplicación en redes.

• Soporta varios niveles de conectividad en red:

­ Permite abrir un URL
­ RMI
­ Permite trabajar con “sockets”

• Permite crear de forma sencilla, tanto aplicaciones cliente 

como servidor.

Octubre 2007

Laboratorio de Redes de Comunicaciones

3

Clientes y servidores

UNIVERSIDADE DA CORUÑA

• Aplicaciones Cliente/Servidor

• Cliente:

– Programa que ejecuta el usuario
– Solicita un servicio a una máquina

• Servidor:

– Ofrece un servicio a múltiples clientes

• Ejemplos: telnet, ftp, web, echo

Octubre 2007

Laboratorio de Redes de Comunicaciones

4

Ejemplo: Servicio de telnet

UNIVERSIDADE DA CORUÑA

Ejecuta un telnet

Servidor de telnet: telnetd

Octubre 2007

Laboratorio de Redes de Comunicaciones

5

Conceptos básicos de redes

UNIVERSIDADE DA CORUÑA

• En Internet se utiliza la pila de 

protocolos TCP/IP para el 
establecimiento y realización de 
conexiones, basado en un 
conjunto de protocolos 
organizados en diferentes 
niveles: Enlace / Red / 
Transporte / Aplicación.
• Normalmente, cuando se 

escriben aplicaciones Java en 
Red se programa a nivel de 
aplicación.

• Es posible realizar programas a 

más bajo nivel utilizando la 
API java.net => nivel de 
transporte => TCP /UDP.

Capa de Aplicación
(HTTP, ftp, telnet)

Capa de Transporte
(TCP, UDP)

Capa de Red
(IP)

Capa de Enlace
(Ethernet, ...)

Octubre 2007

Laboratorio de Redes de Comunicaciones

6

Capa de Transporte: TCP vs UDP

UNIVERSIDADE DA CORUÑA

• TCP: Transmission Control Protocol

– Protocolo orientado a conexión
– Provee un flujo de bytes fiable entre dos ordenadores.

• Llegada en orden, correcta, sin perder nada.

– Protocolos del nivel de  aplicación que usan TCP: telnet, http, ftp.

• UDP: User Datagram Protocol

– No orientado a conexión.
– Envía paquetes de datos (datagramas) independientes sin 

garantías.

– Protocolos del nivel de aplicación que usan UDP: tftp, ping.
– Permite broadcast.

Octubre 2007

Laboratorio de Redes de Comunicaciones

7

¿Qué es un puerto?

UNIVERSIDADE DA CORUÑA

• Un ordenador tiene una o varias conexiones físicas a la red.
• A través de esas conexiones recibe los datos dirigidos a la máquina.


¿Cómo determinar a que aplicación enviar los datos?  Puertos.
– TCP y UDP utilizan los puertos para dirigir los datos a la aplicación 

correcta de entre todas las que se estén ejecutando en la máquina.

• Los datos transmitidos a través de Internet contienen información de 
direccionamiento que identifica a la máquina y puerto a los que van 
dirigidos.
– La máquina se identifica a través de una dirección IP de 32 bits. 
– Los puertos se identifican por un número de 16 bits.

• Puertos:

– Independientes para TCP y UDP.
– 16 bits  Rango: 0 a 65535.
– Reservados: 0 a 1023 (“well known ports”)

• Para servicios conocidos: HTTP,FTP, …
• No deberían ser utilizados por aplicaciones de usuario.

Octubre 2007

Laboratorio de Redes de Comunicaciones

8

TCP

UNIVERSIDADE DA CORUÑA

• Una aplicación servidora se registra en un puerto concreto.
– El servidor se registra en el sistema para recibir los datos dirigidos 

a ese puerto.

• El cliente se conecta con el servidor usando ese número de 

puerto.
– Sólo en el establecimiento de la conexión se precisa la 

IP+puerto.

conexión.

Servidor

– El resto de paquetes TCP sólo llevan un identificador de la 

p
u
e
r
t
o

TCP

Cliente

Octubre 2007

Laboratorio de Redes de Comunicaciones

9

UDP

UNIVERSIDADE DA CORUÑA

• Una aplicación servidora se registra en un puerto concreto.
– El servidor se registra en el sistema para recibir los datos dirigidos 

a ese puerto.

• El cliente envía datagramas que contienen el número de 

puerto del destino asociado a la aplicación servidora.
– UDP enruta hacia la aplicación adecuada.
– En cada paquete UDP va toda la información necesaria para que 

enrute: IP+puerto

Aplicación

Aplicación

Aplicación

Puerto 

Puerto 

UDP

Puerto 

Octubre 2007

Laboratorio de Redes de Comunicaciones

# Puerto

Datos

Paquete

10

Clases para Redes en JDK

UNIVERSIDADE DA CORUÑA

• Paquete java.net

– Clases Java para crear programas que utilicen TCP o UDP para 

comunicarse sobre Internet.

– Clases URL, URLConnection, Socket, ServerSocket

•  Utilizan TCP para comunicaciones de red.

– Clases DatagramPacket, DatagramSocket, MulticastSocket

• Utilizan UDP para comunicaciones de red.

• Niveles de comunicación de red

– Bajo nivel: Aplicaciones cliente/servidor basadas en protocolos.
– Alto nivel: Acceso a recursos de red

Octubre 2007

Laboratorio de Redes de Comunicaciones

11

¿Qué es un socket?

UNIVERSIDADE DA CORUÑA

• Es un extremo de un enlace de comunicación bidireccional 

entre dos programas que se comunican por la red.
– Un socket se asocia a un número de puerto. 

• Se identifica por dirección IP de la máquina + número de 

puerto.

• Existen en TCP y UDP.

Octubre 2007

Laboratorio de Redes de Comunicaciones

12

Sockets TCP (1)

UNIVERSIDADE DA CORUÑA

• Sockets orientados a conexión.
• El servidor se ejecuta en una máquina y crea un socket 

orientado a conexión ligado a un número de puerto 
específico.
– El servidor espera, escuchando por ese socket, a que los clientes 

hagan peticiones de conexión. 

• El cliente conoce:

– La máquina donde se está ejecutando el servidor 
– El puerto donde el servidor está escuchando.

p
u
e
Servidor   
r
t
o

l
i
s
t
e
n

Petición de
conexión

p
u
e
r
t
o

Cliente

Octubre 2007

Laboratorio de Redes de Comunicaciones

13

Sockets TCP (2)

UNIVERSIDADE DA CORUÑA

• El cliente envía una petición de conexión al servidor, 

usando esa máquina y número puerto.

• Además, el cliente tiene que identificarse ante el servidor, 
por tanto al cliente se le asigna un puerto en su máquina, 
que será utilizado a lo largo de la conexión.
– Normalmente esta asignación la realiza el sistema.
• Si todo va bien el servidor acepta la conexión. 

– El servidor obtiene un nuevo socket asociado al mismo puerto 

local que el original, y que tiene como otro extremo de la conexión 
la dirección y puerto del cliente.

– Es necesario crear un nuevo socket para atender al cliente, para 

poder seguir recibiendo peticiones de conexión a través del socket 
original.

Octubre 2007

Laboratorio de Redes de Comunicaciones

14

Sockets TCP (3)

UNIVERSIDADE DA CORUÑA

• En el lado cliente, si la conexión es aceptada, se obtiene un socket 

conectado con el servidor.

• A partir de ahí, cliente y servidor se comunican escribiendo y leyendo 

por sus respectivos sockets.

p
u
e
Servidor   
r
t
o

l
i
s
t
e
n

Conexión

p
u
e
r
t
o

Cliente

• Clases:

– java.net.Socket: Implementa un extremo de una conexión bidireccional.
– java.net.ServerSocket: Implementa un socket que los servidores pueden 

utilizar para escuchar y aceptar peticiones de clientes.

Octubre 2007

Laboratorio de Redes de Comunicaciones

15

Sockets UDP (1)

UNIVERSIDADE DA CORUÑA

• Sockets NO orientados a conexión.

– Se envían y reciben paquetes independientes de información
– Clientes y servidores NO se conectan
– NO se garantiza la recepción del paquete ni el orden.

• Datagrama:

– Mensaje independiente, enviado a través de una red cuya llegada, tiempo 

de llegada y contenido no está garantizado.

• El servidor se ejecuta en una máquina y crea un socket no orientado a 

conexión que está ligado a un número de puerto específico.
– A partir de ahí el servidor recibe todos los datos enviados a ese puerto 

UDP, leyendo a través de ese socket. 

• El cliente conoce:

– La máquina donde se está ejecutando el servidor 
– El puerto asociado al servidor.

Octubre 2007

Laboratorio de Redes de Comunicaciones

16

Sockets UDP (2)

UNIVERSIDADE DA CORUÑA

• El cliente crea un socket no orientado a conexión ligado a un número 

de puerto específico y lo utiliza para enviar Datagramas al servidor.
– Normalmente la asignación del número de puerto en el cliente la hace el 

sistema.

– Los Datagramas enviados deben contener la dirección y número de puerto 

del servidor al que van dirigidos.

• Cuando un servidor recibe un Datagrama:

– Obtiene la dirección de la máquina del cliente y su número de puerto.
– Envía la respuesta al cliente creando un Datagrama dirigido a esa máquina 

y puerto.

• Clases:

– java.net.DatagramSocket
– java.net.DatagramPacket

Octubre 2007

Laboratorio de Redes de Comunicaciones

17

Direcciones IP

UNIVERSIDADE DA CORUÑA

• Clase java.net.InetAddress:

– Métodos estáticos:

• InetAddress getByName(String host)

– Obtiene la dirección IP de la máquina 
– Recibe el nombre de la máquina o su dirección IP como cadena.

• InetAddress[] getAllByName(String host)

– Otiene todas las direcciones IP de una máquina.
– Recibe el nombre de la máquina o su dirección IP como cadena.

• InetAddress getLocalHost(): 

– Obtiene la dirección IP de la máquina en la que se está ejecutando.

– Método:

•  public String getHostName()

– Devuelve el nombre de la máquina correspondiente a esta IP.

Octubre 2007

Laboratorio de Redes de Comunicaciones

18

TCP ­ Cliente (1)

UNIVERSIDADE DA CORUÑA

• Operación:

– Crear un socket
– Establecer la conexión con el servidor
– Intercambio de datos (según protocolo):
• Abri
  • Links de descarga
http://lwp-l.com/pdf4858

Comentarios de: Programación con Sockets en Java - Laboratorio de Redes de Comunicaciones (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