Want to create interactive content? It’s easy in Genially!

Get started free

Microcurso

Axel Ernesto Moreno Cervantes

Created on September 17, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Word Search: Corporate Culture

Microlearning: How to Study Better

Microcourse: Artificial Intelligence in Education

Microcourse: Key Skills for University

Microcourse: Learn Spanish

How to Create the Perfect Final Project

Create your interactive CV

Transcript

Microcurso

Sockets de flujo bloqueantes

¿Qué vas a aprender?

En este microcurso descubrirás los fundamentos de Sockets de flujo bloqueantes que permiten crear aplicaciones en red que se comuniquen de manera confiable. Al finalizar esta píldora serás capaz de:

  • Identificar las funciones del servicio de transporte TCP
  • Comprender la API de socket de flujo bloqueante y su sintaxis en java.
  • Escribir código java sencillo para crear una aplicación mediante sockets de flujo bloqueantes.

Conceptos básicos

El Protocolo de Control de Transmisión brinda un servicio de transporte confiableVer detalles.

Opciones de la clase ServerSocket

Lado del servidor

APIde sockets de flujo

Protocolo TCP

Opciones de socket

Opciones de la clase Socket

Lado del cliente

Transmisión de distintos tipos de datos

Envío de texto

Recepción de distintos tipos de datos

Recepción de texto

Envío de primitivos

Pecepción de primitivos

Envío de objetos

Recepción de objetos

Pon a prueba lo aprendido hasta ahora

¿Qué hemos aprendido?

✅ Revisamos el API de socket de flujo. ✅ Descubrimos el uso de las opciones de socket. ✅ Identificamos como enviar y recibir distintostipos de datos a través de un socket de flujo. ✅ Pusimos a prueba lo aprendido.

¡Ya estás listo para empezar a crear aplicaciones simples usando sockets de flujo bloqueantes!

Fin..

Regresar

Características de TCP

- Orientado a conexión - Full duplex - Fiable - Reconoce los datos enviados como una cadena contínua de bytes - No reconoce límite de mensajes o registrosen la secuencia de bytes - Brinda control de flujo del emisor y receptor -Solo permite usar direccionamiento de unidifusión

Ver encabezado de TCP

Opciones de socket en clase ServerSocket

SO_REUSEADDR Para los sockets AF_INET , esto significa que un socket puede enlazarse, excepto cuando hay un socket de escucha activo.

SO_RCVBUF Permite modificar el tamaño del buffer de lectura

Regresar

Ver ejemplo de uso

Opciones de socket en clase Socket

SO_SNDBUF Permite modificar el tamaño del buffer de escritura SO_RCVBUF Permite modificar el tamaño del buffer de lectura SO_KEEPALIVE permite sondear periódicamente el otro extremo de la conexión SO_LINGER Fija el intervalo de espera (en segundos) para el cierre de conexión SO_TCPNODELAY Permite deshabilitar el algoritmo de Nagle

Regresar

Ver ejemplo de uso

Ejemplo:

ObjectOutputStream oos = new ObjectOutputStream(cl.getOutputStream); Dato d = new Dato(); oos.writeObject(d); oos.writeInt(100); oos.writeFloat(15.1f); oos.flush(); oos.close();

Ejemplo de modificación de opciones de socket

s.setOption(StandardSocketOptions.SO_RCVBUFF, 70000); s.setOption(StandardSocketOptions.SO_REUSEADDR. true);

Ejemplo de uso cl.setOption(StandardSocketOptions.SO_SNDBUFF, 70000); cl.setOption(StandardSocketOptions.SO_KEEPALIVE, true); cl.setOption(StandardSocketOptions.TCP_NODELAY, true); cl.setOption(StandardSocketOptions.SO_LINGER, 10)

Encabezado de TCP

Ejemplo:

DataOutputStream dos = new DataOutputStream(cl.getOutputStream()); dos.writeInt(1); dos.writeFloat(2.0f); dos.writeLong(3); dos.writeUTF("cuatro"); dos.flush(); dos.close();

Ejemplo:

BufferedReader br = new BufferedReader(new InputStreamReader(cl.getInputStream())); String v = br.readLine(); br.close();

Ejemplo:

ObjectInputStream ois = new ObjectInputStream(cl.getInputStream()); Dato d1 = (Dato)ois.readObject();

Ejemplo:

PrintWriter pw = new PrintWriter(new OutputStreamWriter(cl.getOutputStream())); pw.println("envío de texto desde el socket"); pw.flush(); pw.close();

Ejemplo:

DataInputStream dis = new DataInputStream(cl.getInputStream());nt v1 = ois.readInt(); float v2 = ois.readFloat(); long v3 = ois.readLong(); String v4 = ois.readUTF();