28.06.2017 Views

Python para todos

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!