Top Banner
Sockets en Python Bautista Neri Alejandro Corona Falcon Juan Gonzalez Castillo Ignacio Quiroz Martinez Ezequiel
20

Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Oct 20, 2018

Download

Documents

nguyennga
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Sockets en Python

Bautista Neri Alejandro

Corona Falcon Juan

Gonzalez Castillo Ignacio

Quiroz Martinez Ezequiel

Page 2: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.
Page 3: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la programación funcional: lambda, map, filter y reduce.

La última versión liberada fue Python 1.2. En 1995

Durante su estancia en CNRI, van Rossum lanzó la iniciativa ComputerProgramming for Everybody, con el fin de hacer la programación más accesible, con un nivel de 'alfabetización' básico en lenguajes de programación, similar a la alfabetización básica en inglés y habilidades matemáticas indispensables para los trabajadores.

Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, presentaban similitudes con su predecesor, ABC.

Python 2.0 tomó una característica del lenguaje de programación Haskell: listcomprehensions. Python tiene una sintaxis muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell.

Python 2.0 introdujo además un sistema de recolección de basura capaz de recolectar referencias cíclicas.

Page 4: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Python License, incluía una cláusula estipulando que estaba gobernada por el

estado de Virginia, bajo la óptica de los abogados de Free Software Foundation

(FSF), se hacía incompatible con GNU GPL. CNRI y FSF se relacionaron para

cambiarla a software libre de Python y hacerla compatible con GPL.

En Python 2.2 fue la unificación de los tipos en Python (tipos escritos en C), y

clases (tipos escritos en Python) dentro de una jerarquía. Esa unificación logró un

modelo de objetos de Python puro y consistente. También se agregaron

generadores para el lenguaje Icon.

Las adiciones a la biblioteca estándar de Python y las decisiones sintácticas

fueron influenciadas fuertemente por Java en algunos casos: el package logging,

en la versión 2.3, el parser SAX, en 2.0, y la sintaxis del patrón decorator que usa

el @, agregado en la versión 2.4.

Características

Se compara habitualmente con Tcl, Perl, Scheme, Java y Ruby. En la actualidad

Python se desarrolla como un proyecto de código abierto, administrado por la

Python Software Foundation. La última versión estable del lenguaje es 3.1.

Page 5: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Python permite dividir el programa en módulos reutilizables desde otros

programas Python. Viene con una gran colección de módulos estándar que se

pueden utilizar como base a los programas. También hay módulos incluidos que

proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a

GUI (interfaz gráfica con el usuario) como Tk, GTK, Qt entre otros.

Python se utiliza como lenguaje de programación interpretado, ahorrando un

tiempo considerable en el desarrollo del programa, no es necesario compilar ni

enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita

experimentar las características del lenguaje.

Otro objetivo del diseño del lenguaje es la facilidad de extensión. Nuevos módulos

se pueden escribir fácilmente en C o C++. Python puede utilizarse como un

lenguaje de extensión para módulos y aplicaciones que necesitan de una interfaz

programable.

Page 6: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Los sockets son las tuberías de plomo de las redes computacionales que le permiten conectarse con otros dispositivos para que la información fluya libremente.

Como es de esperar, son ampliamente utilizados en Internet.

Page 7: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Los programas utilizan sockets para comunicarse con otros programas, que pueden estar situados en

computadoras distintas.

Un socket queda definido por la dirección IP de la máquina, el puerto en el que escucha, y el protocolo

que utiliza.

Page 8: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Los sockets se clasifican en sockets de flujo (socket.SOCK_STREAM)

Los sockets de datagramas (socket.SOCK_DGRAM)

Dependiendo de si el servicio utiliza TCP, que esorientado a conexión y fiable, o UDP, respectivamente.

Page 9: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

a) El dominio de UNIX. (AF_UNIX)

b) El dominio de internet. (AF_INET)

c) El dominio NS.

Page 10: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Se utiliza para la comunicación entre procesos del sistema.

El dominio de internet. (AF_INET)

Se utiliza en procesos que se están comunicando a través de TCP(UDP)/IP.

Page 11: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Se utilizaba sobre los procesos que se comunicaban sobre el protocolo de comunicación de Xerox.

Python solo soporta los dos primeros tipos de comunicación.

Page 12: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Socket Descripcion

socketCrea un socket del tipo y familia

especificada.

socket.accept Acepta nuevas conexiones.

socket.connectConecta el socket a la dirección dada en el

puerto dado.

socket.send Envia datos al socket especificado.

socket.recv Recive información.

Page 13: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Lo primero que se hace es crear un objeto socket para el servidor

#constructor socket.socket()

#e indicamos el puerto de escucha utilizando método bind

socket_s=socket.socket( )

socket_s.bind((“Local host”, 9999))

Por último utilizamos listen para hacer que el socket acepte conexiones entrantes y accept para comenzar a escuchar.

Page 14: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

El método accept se mantiene a la espera de conexiones entrantes, bloqueando la ejecución hasta que llega un mensaje.

#el argumento de listen es el numero de clientes

socket_s.listen(10)

Cuando llega un mensaje, accept desbloquea la ejecución, devolviendo un objeto socket que representa la conexión del cliente y una tupla que contiene el host y puerto de dicha conexión.

#representa a la conexión

socket_c, (host_c, puerto_c)=socket_s.accept( )

Page 15: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Una vez que tenemos este objeto socket podemos comunicarnos con el cliente a través suyo, mediante los métodos recv y send (o recvfrom y sendfrom en UDP) que permiten recibir o enviar mensajes respectivamente.

#send(datos) recv (bytes)

recibido=socket_c.recv(1024)

print “Recibido: ”, recibio

socket_c.send(recibido)

#posterirmente se cierra

Page 16: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Crear un cliente es aún más sencillo. Sólo tenemos que crear el objeto socket, utilizar el método connect para conectarnos al servidor y utilizar los métodos send y recv. El argumento de connect es una tupla con host y puerto, exactamente igual que bind.

socket_c=socket.socket( )

socket_c.connect((“localhost”, 9999))

socket_c.send(“hola”)

Page 17: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

#El cliente manda al servidor cualquier mensaje que escriba el usuario y #el servidor no hace más que repetir el mensaje recibido. La ejecución #termina cuando el usuario escribe quit#en el lado del servidorimport sockets=socket.socket()s.bind((“Localhost”, 9999))s.listen(1)sc, addr=s.accept( )while True:

recibido=sc.recv(1024)if recibido==”quit”

breakprint “Recibido: ”, recibidosc.send(recibido)

print “adios”sc.close()s.close()

Page 18: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

#en el lado del cliente

import socket

c=socket.socket

c.connect((“Localhost”, 9999))

Page 19: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Conclusiones Su sintaxis simple, clara y sencilla.

Interfaz dinámico.

Gestor de memoria.

Gran cantidad de librerías disponibles y la potencia del lenguaje.

Hacen que desarrollar una aplicación en Python sea sencillo, muy rápido.

La sintaxis es sencilla y cercana al lenguaje natural

Page 20: Sockets en Python Gonzalez Castillo Ignacio Quiroz ...profesores.fi-b.unam.mx/yasmine/expo/Sockets_Phyton.pdf · Otro objetivo del diseño del lenguaje es la facilidad de extensión.

Conclusiones Algunos ejemplos en el uso de Python son:

Google,

Yahoo,

NASA,

Industrias Light & Magic,

Distribuciones LINUX,

No es adecuado para la programación de bajo nivel o para aplicaciones en las que el rendimiento sea crítico.