Un socket en programación es un tunel de comunicación que ayuda a que 2 aplicaciones se comuniquen, los sockets son la base de internet y de sus protocolos como HTTP, FTP, SMTP, etc.
Los sockets son la base de los protocolos de internet, pero también los podemos utilizar para sacarle provecho, es decir mediante sockets podemos hacer que dos aplicaciones se comuniquen entre si.
Hacer que 2 aplicaciones se comuniquen entre si? Para entender esto primero debes saber como se efectua una comunicación humana.
- El que habla
- El que escucha
- Por donde pasan los datos
- El tema de conversación
En una comunicación humana, todos los humanos estamos escuchando, cuando alguien nos habla entonces empezamos una comunicación y de la comunicación hay un lugar por donde pasa el sonido, espero me entiendan.
Para que dos aplicaciones se comuniquen debe haber:
- Servidor (el que escucha). El servidor siempre escucha por un puerto (por donde pasan los datos) lo que el cliente diga y si tiene respuesta, entonces responde.
- Cliente (el que habla). Normalmente el cliente se conecta al servidor por el puerto y le empieza a enviar peticiones y esperando respuestas.
- Por donde pasan los datos, realmente es por un puerto de entrada para el servidor y un puerto de salida para el cliente.
- El tema de conversación (protocolo), para que halla comunicación entre las 2 aplicaciones, estas deben estar programadas para responderse entre si, lo cual se denomina protocolo.
Las aplicaciones también pueden ser:
- Servidor: Aplicación que esta a la espera de que se conecte el cliente.
- Cliente: Aplicación que se conecta al servidor.
- Cliente/Servidor: Aplicación que es cliente y servidor al mismo tiempo, ejemplo una aplicación de chat, la cual puede enviar mensaje a otras aplicaciones y al mismo tiempo esta a la espera de que otras aplicaciones le envíen mensajes.
La comunicación entre 2 aplicaciones puede ser:
- Remota: cuando las aplicaciones están en diferentes computadoras,la aplicación cliente se conecta la dirección IP y puerto del servidor.
- Local: cuando las 2 aplicaciones están en la misma computadora, se usa la dirección IP de LOOPBACK la cual es LOCALHOST o 127.0.0.1.
Los sockets son una característica universal en cualquier lenguaje de programación, y ademas sin limites, una aplicación hecha en PHP se puede comunicar con otra hecha en JAVA y viceversa, o una aplicación hecha en Python se puede comunicar con una hecha C# .NET.
Gracias a esto tenemos navegadores, clientes de correo, clientes FTP, etc que funcionan y se comunican con los servidores sin importar el sistema operativo en que funcionen o lenguaje de programación en que estén programados.
Espero hayan entendido un poco sobre el tema de los sockets, con este post quiero introducir a una serie de artículos y ejemplos relacionados con el mundo de los sockets y de la comunicación.
Me pareció una explicación general muy buena, está perfecto como una introducción al concepto de sockets.
Fabuloso, grandiosa explicación, me ayudó mucho a entender este concepto. Mil Gracias.