¿Que es un socket?
Pues lo primero que hay que aclarar es que cuando hablo de sockets no me refiero a los de las paredes.
Bueno, después de haber empezado este tutorial con un mal chiste ahora si entremos de lleno,
lo más importante para nosotros es saber que un socket nos permite comunicarnos con otras
computadoras, de esa manera la informacón puede viajar libremente por todos lados.
Mucha gente se aterroriza al enterarse que tiene que desarrollar alguna aplicación haciendo uso de
sockets, pues el dia de hoy descubriremos que no es nada del otro mundo, este manual se enfoca solamente a
sockets en Python, si alguna vez han trabajado con sockets en C se darán cuenta que en Python es mucho
más fácil (que no lo es??), bueno, los puntos que trataremos en este tutorial son:
- Estructura de un socket.
- Algunos elementos del socket.
- Programacion orientada a sockets.
- Hola mundo del socket.
- Un hola mundo real.
- Un pequeño chat.
- Sockets con clase.
- Base de cliente telnet.
Primero que nada...
En este tuorial solamente estaremos hablando de sockets del dominio de internet, es decir de la familia AF_INET,
existen otros, pero esos no serán vistos en este documento, y nos centraremos más
en el tipo SOCK_STREAM, aunque veremos un poco del SOCK_DGRAM, si no estan entendiendo nada (o algo) de lo que aqui
estoy mencionando no se preocupen, aqui va una pequeña explicación:
Existen tres dominios de comunicación para un socket:
- a) El dominio de UNIX. (AF_UNIX)
- b) El dominio de internet. (AF_INET)
- c) El dominio NS.
El dominio de UNIX. (AF_UNIX)
Se utiliza para la comunicacón entre procesos del sistema.
El dominio de internet. (AF_INET)
Se utiliza en procesos que se estan comunicando atravéz de TCP(UDP)/IP, es el que veremos.
El dominio NS.
Se utilizaba sobre los procesos que se comunicaban sobre el protocolo de comunicación de Xerox.
Python solo soporta los dos primeros tipos de comunicacón, como mencionamos solamente trataremos con la familia
AF_INET en este documento.
Rapido vistazo a algunos elementos de los sockets en Python.
| Socket |
Descripcion |
| socket |
Crea un socket del tipo y familia especificada. |
| socket.accept |
Acepta nuevas conexiones. |
| socket.connect |
Conecta el socket a la dirección dada en el puerto dado. |
| socket.send |
Envia datos al socket especificado. |
| socket.recv |
Recive información. |
Estos son algunos elementos que pertenecen a los sockets, fatlan varios, pero los iremos viendo
conforme avancemos.
Programación orientada a sockets.
No es muy complejo adaptarse a la manera en que trabajan los sockets, primero que nada se necesita una
aplicacion que haga el trabajo de servidor, las principales cosas que hace un servidor son las siguientes:
- Ser creado.
- Ser asignado a una dirección y darle un puerto.
- Esperar por nuevas conexiones.
- Aceptar nuevas conexiones.
Eso es lo basico que hace un servidor, claro que tambien es importante que mande y reciva información.
Después se crean los clientes, lo que realizan los o el cliente es:
- Ser creado.
- Conectarse a una dirección y puerto dado.
Simple no, claro que tambien es importante que mande o reciva información.