1. ¿Qué es la programación Socket
- Significado literal de Socket
La palabra socket significa originalmente enchufe. Un enchufe crea una conexión entre dos extremos, por lo que en programación de redes hace referencia a un punto final de comunicación de red. - Definición de programación Socket
Intercambio de datos entre varios equipos mediante los protocolos de red TCP / UDP. - Explicación sencilla
Escribir código para que dos o más ordenadores intercambien datos. Un ejemplo típico es una herramienta de chat en red local.
Analogía: enchufe = interfaz de red; clavija = otro equipo; conectar la clavija = establecer conexión de red.
Para entender mejor los conceptos, aprenderemos desarrollando un ejemplo práctico.
2. Esquema de diseño de una herramienta de chat sencilla
Modelo de arquitectura: Cliente‑Servidor (C/S)
- Servidor (Server)
- Vincularse a un puerto local específico y mantener escucha continua de peticiones de red
- Esperar intentos de conexión de otros equipos
- Crear un canal de comunicación cuando se detecte la llegada de un cliente
- Cliente (Client)
Enviar petición de conexión usando la dirección IP y el número de puerto del servidor - Objetivo de la comunicación: Intercambiar mensajes de texto en tiempo real entre dos ordenadores para implementar un chat instantáneo
Flujo de funcionamiento
- Iniciar servidor → activar escucha del puerto
- Iniciar cliente → conectar con IP y puerto del servidor
- Una vez establecida la conexión, ambos extremos envían y reciben mensajes
A continuación se muestra un ejemplo mínimo
Servidor
// 1. Crear TcpListener para escuchar IP y puerto
TcpListener listener = new TcpListener(IPAddress.Any, 8899);
listener.Start();
// 2. Esperar conexión del cliente
TcpClient client = await listener.AcceptTcpClientAsync();
// 3. Obtener flujo de red para enviar y recibir mensajes
NetworkStream stream = client.GetStream();
Lenguaje del código: JavaScript (javascript)
Cliente
// Conectar a IP y puerto del servidor
TcpClient client = new TcpClient();
await client.ConnectAsync("192.168.1.100",8899);
NetworkStream stream = client.GetStream();Lenguaje del código: JavaScript (javascript)
Resumen