Skip to content

Latest commit

 

History

History
161 lines (113 loc) · 5.8 KB

Unidad5.md

File metadata and controls

161 lines (113 loc) · 5.8 KB
title
Sockets

Sockets

Introducción a los sockets

Socket: Definiciones básicas

Un socket es un punto final en una conexión de red bidireccional que permite a dos programas comunicarse entre sí.

Los sockets se utilizan para la comunicación entre máquinas a través de una red. Incluso para la comunicación entre procesos en la misma máquina.

Tipos de sockets: TCP (Transmission Control Protocol)

TCP es un protocolo orientado a la conexión que proporciona una comunicación confiable y ordenada entre dos programas. Algunas características clave de TCP son:

TCP establece una conexión entre dos puntos finales antes de comenzar a enviar datos. Los datos se envían en forma de segmentos y cada segmento tiene un número de secuencia asociado.
TCP garantiza que todos los datos enviados llegarán al receptor. Si algún segmento se pierde o se daña durante la transmisión, TCP se encarga de retransmitir los segmentos faltantes o dañados.
TCP utiliza mecanismos de control de flujo y congestión para garantizar que los datos se transmitan de manera eficiente y evitar la saturación de la red.
TCP garantiza que los datos lleguen al receptor en el orden en que fueron enviados.
Importante explicar: Streaming

Tipos de sockets: UDP (User Datagram Protocol)

UDP es un protocolo orientado a datagramas que proporciona una comunicación no confiable y no ordenada entre dos programas. Algunas características clave de UDP son:

UDP envía datos en forma de datagramas independientes, sin establecer una conexión previa entre los puntos finales.
A diferencia de TCP, UDP no garantiza la entrega de los datos. Si un datagrama se pierde o se daña durante la transmisión, no se vuelve a enviar. Esto puede resultar en la pérdida de datos en la comunicación.
UDP no tiene mecanismos de control de flujo ni de congestión. Esto puede llevar a la saturación de la red si se envían grandes volúmenes de datos a través de UDP.
Los datagramas UDP pueden llegar al receptor en un orden diferente al que fueron enviados.

Tipos de sockets: TCP Vs UDP

Cada uno de estos protocolos desempeña un papel fundamental en la transmisión de datos en redes, pero difieren en términos de confiabilidad, orden y priorización. Descubriremos cómo TCP ofrece una comunicación confiable y ordenada, ideal para aplicaciones como transferencia de archivos y sistemas de mensajería, mientras que UDP se destaca por su velocidad y baja latencia, siendo la elección preferida para aplicaciones de transmisión de video y audio en tiempo real.

::::{grid} :gutter: 3

:::{grid-item-card} :class-body: text-right :class-header: bg-light text-center

TCP es un protocolo adecuado cuando se requiere una **comunicación confiable y ordenada** entre dos programas, como en aplicaciones de transferencia de archivos o sistemas de mensajería. 
<img src="_static/images/U5_5.jpg"/>

:::

:::{grid-item-card} :class-body: text-right :class-header: bg-light text-center

UDP es más adecuado cuando la **velocidad y la baja latencia** son más importantes que la confiabilidad y el orden, como en aplicaciones de transmisión de video o audio en tiempo real.
<img src="_static/images/U5_6.jpg"/>

:::

::::

Ejemplo básico de Sockets en Python

En este notebook, exploraremos el mundo de la programación de sockets en Python, una parte fundamental para establecer comunicación en redes. Comenzaremos con la definición del socket servidor, donde aprenderás cómo crear un socket orientado a la conexión utilizando la biblioteca socket de Python. Aprenderás sobre los dominios de dirección y los tipos de sockets, y cómo utilizarlos para crear un socket TCP.

Luego, nos sumergiremos en la creación del socket cliente, donde te mostraremos cómo establecer una conexión con un servidor. Aprenderás a enviar y recibir datos a través del socket y cómo codificar y decodificar la información utilizando la codificación 'utf-8'.

Este notebook te proporcionará una base sólida para comprender la comunicación en red a través de sockets en Python, una habilidad esencial en el desarrollo de aplicaciones que interactúan a través de Internet.

**Time code**

Analizar el notebook llamado **SocketsBasicoPython.ipynb**

Sockets en Python Avanzado vs Implementación en JAVA

Se presentan 4 notebooks, dos para cada lenguaje de programación, correspondientes a cliente y a servidor.

::::{grid} :gutter: 3

:::{grid-item-card} :class-body: text-right :class-header: bg-light text-center

 Analizar los notebooks:
- **SocketsServerPython.ipynb**
- **SocketsClientePython.ipynb**
<img src="_static/images/logo-python.png"/>

:::

:::{grid-item-card} :class-body: text-right :class-header: bg-light text-center

 Analizar los notebooks:
- **SocketsServerJava.ipynb**
- **SocketsClienteJava.ipynb**
<img src="_static/images/logo-java.png"/>

::: ::::

Sistema de Chat con el ChatGPT

Ahora que tal si implementamos un sistema de chat con la herramienta bien conocida ChatGPT.

**Time code**

 Analizar los notebooks:
- **GPTChatServer.ipynb**
- **GPTChatClient.ipynb**