Puedo buscar y ya he visto la entrada de wikipedia y en otros lugares, pero aunque tengo algo de experiencia en programación, realmente no entiendo el concepto. ¿Puede tratarme como un niño de 10 años y darme una explicación clara sobre la comunicación de socket?
20
Respuestas:
Déjame darte un ejemplo: di que quieres comunicarte / chatear con tu amigo, que no vive en tu dirección. Para que eso suceda, debe establecer un "canal de comunicación". Digamos que quieres hacer esta comunicación usando teléfonos. Usted sabe que hay una red de líneas telefónicas en la ciudad que se extiende a todas las casas.
Ahora, hay una toma de teléfono en su casa y una en la casa de sus amigos. Para que la comunicación tenga lugar, usted y su amigo tienen que conectarse a la red conectando su teléfono a la toma de corriente, en ambos extremos de la comunicación. Los enchufes en la programación son los mismos, conceptualmente, que los enchufes del teléfono.
En programación, tiene dos procesos (programas en ejecución) que desean comunicarse entre sí. Para eso, tienen que establecer un vínculo de comunicación entre ellos. Nuevamente, hay una red disponible, solo necesitan conectarse a esta red utilizando algún tipo de sockets. Los sockets Unix son uno de esos sockets que proporciona esta conectividad / capacidad de conexión a la red. Por lo tanto, en cada uno de los dos programas, tendrá un fragmento de código que hace el trabajo de conectarse a la red a través de sockets.
El resto son detalles.
fuente
Los zócalos Unix son un zócalo bidireccional, al igual que un zócalo basado en IP, con el que probablemente esté familiarizado, y algo similar a una tubería, con la que probablemente esté familiarizado.
Tienen un pequeño conjunto de propiedades interesantes:
Esencialmente, son el equivalente de cualquier otro zócalo: tienen propiedades ligeramente más interesantes que las tuberías, pero de lo contrario no son radicalmente diferentes. Por lo general, tienen una latencia IPC más alta que una tubería y, a menudo, amortiguadores más grandes, aunque es posible que pueda ajustar eso, y depende de la plataforma.
La última propiedad interesante para recordar es que usan el sistema de archivos como su espacio de nombres, por lo que son como una tubería con nombre, en lugar de una tubería anónima, en ese software sin relación previa puede comunicarse. (Los sockets abstractos del espacio de nombres son los mismos, pero la ruta del "archivo" no tiene que existir).
No hay nada más profundo que eso: no tienen ninguna propiedad oculta súper secreta que los haga radicalmente diferentes de una tubería típica o una conexión TCP a localhost.
fuente
Programación de sockets de Linux, Parte 1: Usar TCP / IP funcionó bastante bien para mí. Comienza con una introducción a las redes IP y las capas de red, luego continúa mostrando cómo implementar un servidor de eco simple y un cliente tanto en C como en Python.
fuente