Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Sockets<br />
La comunicación entre distintas entidades en una red se basa en<br />
<strong>Python</strong> en el clásico concepto de sockets. Los sockets son un concepto<br />
abstracto con el que se designa al punto final de una conexión.<br />
Los programas utilizan sockets <strong>para</strong> comunicarse con otros programas,<br />
que pueden estar situados en computadoras distintas.<br />
Un socket queda definido por la dirección IP de la máquina, el puerto<br />
en el que escucha, y el protocolo que utiliza.<br />
Los tipos y funciones necesarios <strong>para</strong> trabajar con sockets se encuentran<br />
en <strong>Python</strong> en el módulo socket, como no podría ser de otra<br />
forma.<br />
Los sockets se clasifican en sockets de flujo (socket.SOCK_STREAM) o<br />
sockets de datagramas (socket.SOCK_DGRAM) dependiendo de si el servicio<br />
utiliza TCP, que es orientado a conexión y fiable, o UDP, respectivamente.<br />
En este capítulo sólo cubriremos los sockets de flujo, que<br />
cubren un 90% de las necesidades comunes.<br />
Los sockets también se pueden clasificar según la familia. Tenemos<br />
sockets UNIX (socket.AF_UNIX) que se crearon antes de la concepción<br />
de las redes y se basan en ficheros, sockets socket.AF_INET que son los<br />
que nos interesan, sockets socket.AF_INET6 <strong>para</strong> IPv6, etc.<br />
Para crear un socket se utiliza el constructor socket.socket() que puede<br />
tomar como parámetros opcionales la familia, el tipo y el protocolo.<br />
Por defecto se utiliza la familia AF_INET y el tipo SOCK_STREAM.<br />
Veremos durante el resto del capítulo cómo crear un par de programas<br />
cliente y servidor a modo de ejemplo.<br />
92