PDF de programación - Comunicación entre procesos: sockets udp

Imágen de pdf Comunicación entre procesos: sockets udp

Comunicación entre procesos: sockets udpgráfica de visualizaciones

Publicado el 19 de Junio del 2018
494 visualizaciones desde el 19 de Junio del 2018
3,4 MB
31 paginas
Creado hace 11a (28/09/2012)
Comunicación entre procesos: sockets udp

Jorge Iván Meza Martínez

[email protected]

Especialización en Gestión de Redes de Datos

Universidad Nacional de Colombia – Sede Manizales

1/31

Contenidos

● Conceptos generales de sockets
● Tipos de envío y recepción

– Síncronos
– Asíncronos

2/31

Evaluación pre-contenido

1. Qué es un socket ?
2. Qué tipos de socket existen ?
3. Qué información requiere un socket cliente para

realizar su conexión con el servidor ?

4. Cuáles son las primitivas principales de los

sockets ?

5. Qué significa que estas primitivas sean síncronas o

asíncronas ?

3/31

Soporte a sockets

4/31

Envío síncrono

Send

(cualquier puerto)

(dirección IP, puerto)

Msg Buffer

Emisor

● La comunicación está sincronizada.
● Las primitivas son bloqueantes.

Receptor

Buffer

Receive

5/31

Envío asíncrono

Send

(cualquier puerto)

(dirección IP, puerto)

Msg Buffer

Emisor

● La comunicación no está
sincronizada.
● El envío es no bloqueante.
● La recepción puede ser bloqueante
o no bloqueante.

Buffer

Receptor

Receive

6/31

Sockets

● Proveen comunicación entre procesos que pueden

estar en la misma o diferentes máquinas.

● Creado inicialmente para BSD Unix.
● Se asocian a una dirección IP y un puerto (216)

específicos (cliente / servidor).

● Es responsabilidad del desarrollador la

representación del mensaje.

● A través del mismo socket se puede leer y escribir.
● Están asociados a TCP o UDP.

7/31

Esquema general de la conexión

8/31

Primitivas de los Sockets

● Conectarse a un servidor remoto
● Enviar información
● Recibir información
● Cerrar una conexión
● Asociarse a un puerto
● Escuchar por información entrante
● Aceptar conexiones remotas por el puerto asociado

9/31

Evaluación post-contenido

1. Qué es un socket ?
2. Qué tipos de socket existen ?
3. Qué información requiere un socket cliente para

realizar su conexión con el servidor ?

4. Cuáles son las primitivas principales de los

sockets ?

5. Qué significa que estas primitivas sean síncronas o

asíncronas ?

10/31

Sockets con User Datagram Protocol (UDP)

11/31

Contenidos

● Conceptos generales de los sockets UDP.
● Ventajas y desventajas de los sockets UDP.
● Usos mas frecuentes para los sockets UDP.
● Flujo de eventos durante una comunicación

utilizando sockets UDP.

● Implementación de una conexión con sockets UDP

en Java.

12/31

Evaluación pre-contenido

1. Cuáles es la característica principal de los sockets

UDP ?

2. Cuáles son las ventajas y desventajas de utilizar

sockets UDP ?

3. Para qué tipo de aplicaciones o servicios es idóneo

el uso de sockets UDP y para cuales no ?

13/31

Características de los sockets UDP

● RFC 768.
● Son no orientados a conexión.
● No se garantiza la presencia del destino ni la

existencia de una ruta.

● Los mensajes son enviados en paquetes o

datagramas.

● Distintos datagramas de un mismo mensaje pueden

utilizar distintos caminos para llegar a su destino.
● Por este motivo pueden llegar en desórden (unos

tardan mas que otros) o inclusive, no llegar.

14/31

Datagramas UDP

15/31

Tamaño del Datagrama

● Tamaño máximo: 64KB incluyendo el mensaje

(payload) y diversas cabeceras (headers).

● Mejor tamaño ?

– rlogin → pequeño (1 letra).
– tftp → grandes

● Criterios

– Red poco confiable → pequeños
– Red confiable → grandes
– En general 8KB es una buena opción.

16/31

Sockets UDP

Rápidos pero no fiables.

Analogía: el modelo del correo postal.

17/31

Modelo de fallos de UDP

● No incluye mensaje de reconocimiento

(acknowledge) o reintentos en caso de problemas →
menor sobrecarga (tamaño).

● Los paquetes pueden no llegar en su totalidad.
● Los paquetes pueden llegar desordenados.
● Incluye una suma de verificación (checksum).
● Los paquetes pueden ser desechados en ciertas
condiciones: exceso de tráfico, buffer lleno, etc.

18/31

Usos de sockets UDP

● Útil en servicios que puedan tolerar pérdidas

ocasionales:

– DNS (búsqueda)
– DHCP
– BOOTP
– SNMP
– VoIP
– Audio y video streaming

19/31

Sockets UDP

20/31

Implementación Java de sockets UDP

● DatagramSocket → socket UDP que envía y recibe

datagramas.

● DatagramPacket - mensaje a ser enviado a través de

una conexión UDP.

● InetAddress – dirección IP (v4 o v6)
● SocketException - error sucedido creando o

accediendo a un socket.

● IOException - Error genérico de E/S.

21/31

Servidor UDP Java (general)

DatagramSocket aSocket = new DatagramSocket(8989);

byte[] buffer = new byte[1000];

DatagramPacket request = new DatagramPacket(buffer, 

buffer.length);

aSocket.receive(request);

DatagramPacket reply = new DatagramPacket 

(data.getBytes(), data.getBytes().length, 
 request.getAddress(), request.getPort());

aSocket.send(reply);

22/31

Cliente UDP Java (general)

DatagramSocket aSocket = new DatagramSocket();

byte[] m = new String("Mensaje").getBytes();

InetAddress aHost = InetAddress.getByName("127.0.0.1");
int serverPort = 8989;

DatagramPacket request = new DatagramPacket(m, m.length, 
aHost, serverPort);

aSocket.send(request);

byte[] buffer = new byte[1000];

DatagramPacket reply = new DatagramPacket(buffer, 
buffer.length);

aSocket.receive(reply);

23/31

Como ejecutar el ejemplo: GritonUDP

Compilar las clases (manualmente o utilzar Netbeans)

$ javac *.java

Ejecutar el servidor

$ java GritonUDPServer

Ejecutar el cliente (en otra consola)

$ java GritonUDPClient

Verificar que los
nombres y la
extensión de los
archivos coincidan.
Incluyendo las
mayúsculas y
minúsculas.

24/31

Implementación Java de sockets UDP

“Hola mamá estoy triunfando

en programación“

200 OK true 625

1
0
1
0
0
1
0
0
1
1
1
0
1
0
1
1

25/31

Implementación Java de sockets UDP

● ByteArrayInputStream → flujo de datos construído

a partir de un buffer interno.

● DataInputStream → permite leer tipos primitivos de

datos desde un flujo.

26/31

Cliente UDP Java (payload no es String)

// ...

DatagramPacket request = new DatagramPacket(m, m.length, aHost, 
serverPort);

aSocket.send(request);

DatagramPacket reply = new DatagramPacket(buffer, buffer.length);

aSocket.receive(reply);

InputStream in = new ByteArrayInputStream(reply.getData(),
reply.getOffset(), reply.getLength());

DataInputStream din = new DataInputStream(in);  

// readBoolean(), readByte(), readChar(), readFloat(), ...

27/31

Ejemplo: escaner de puertos UDP local

import java.net.*;

public class UDPPortScanner {

public static void main(String[] args) {

for (int port = 1024; port <= 65535; port++) {

try {

DatagramSocket server = new 
DatagramSocket(port);

server.close( );

} catch (SocketException ex) {

System.out.println("There is a server on 

port " + port + ".");

} // end try

} // end for

}

}

28/31

29/31

Evaluación pre-contenido

1. Cuáles es la característica principal de los sockets

UDP ?

2. Cuáles son las ventajas y desventajas de utilizar

sockets UDP ?

3. Para qué tipo de aplicaciones o servicios es idóneo

el uso de sockets UDP y para cuales no ?

30/31

Actividad

Desarrollar una aplicación Java basada en datagramas con
sockets que implemente una calculadora cliente-servidor.

Desde el cliente se le enviarán solicitudes de operaciones como
“4 + 9 – 5“ a través de la línea de comando y el servidor
enviará de vuelta al cliente el resultado: “8“. Para esto
considere las operaciones aritméticas básicas (+, -, *, /) y no
tenga en cuenta la precedencia de los operadores.

Investigar como evitar en Java que un receive en el cliente
no bloquee infinitamente la aplicación cuando no reciba una
respuesta del servidor en un tiempo prudencial.

31/31
  • Links de descarga
http://lwp-l.com/pdf11979

Comentarios de: Comunicación entre procesos: sockets udp (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