Python

Páginas: 6 (1494 palabras) Publicado: 15 de junio de 2014
Pr´ ctica 1: sockets en Python
a
´
Alvaro Navarro anavarro@gsyc.es
Jes´ s M. Gonz´ lez-Barahona jgb@gsyc.es
u
a
Infraestructura de Redes
5o Ingenier´a Inform´ tica 08/09
ı
a

1.

Fase 1: Cliente UDP

Esta primera fase tiene como objetivo familiarizarnos con el paquete sockets de Python. Para
ello construiremos un sencillo cliente UDP que env´e paquetes a un receptor. Para usarlibrer´a de
ı
ı
sockets basta con importar el paquete sockets de la siguiente forma:
import socket

Podemos crear un socket mediante la funci´ n socket:
o
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)

AF INET especifica la familia de procolos que usaremos. Las otras dos posibilidades son
AF UNIX y AF INET6, pero quedan fuera del alcance de esta pr´ ctica.
a
SOCK STREAM definenuestro socket como TCP. Para definir un socket como UDP usar´amos
ı
la constante SOCK DGRAM. Existen m´ s tipos de sockets, como por ejemplos sockets RAW, que
a
no usaremos en esta pr´ ctica.
a
Una vez creado el socket, podemos realizar env´o y recepciones mediante las funciones send
ı
y recv, en el caso de haber definido un socket TCP, o mediante sendto y recvfrom para UDP. Para
finaliarcerraremos el descriptor del socket mediante el m´ todo close.
e
´
En este punto conviene leer el manual de Python del paquete sockets1 . En el se describe c´ mo
o
usar m´ todos importantes como inicializar la conexi´ n mediante el m´ todo connect (para TCP) o
e
o
e
el m´ todo bind para escuchar peticiones en un puerto.
e
Construye un cliente que env´e peticiones UDP a un host. La direcci´n IP y el puerto destino
ı
o
ser´ n configurados mediante argumentos en l´nea de comandos. De esta forma podr´amos lanzar
a
ı
ı
nuestro cliente:
python clienteUDP.py 127.0.0.1 4000
1

http://www.python.org/doc/2.5.2/lib/module-socket.html

1

Donde 127.0.0.1 es la IP destino (localhost en este caso) y 4000 el puerto.
El programa nos preguntar´ qu´ mensaje (string) queremos enviar.El usuario escribir´ una
a e
a
frase que ser´ enviada al servidor. El programa finalizar´ s´ lo cuando el usuario escriba quit.
a
a o
Para parsear los argumentos de la l´nea de comandos utilizamos el paquete sys de Python.
ı
Nuestro programa recibir´ los argumentos en forma de lista, de forma que podemos acceder a
a
cada elemento de la siguiente forma:
sys.argv[0] # referencia al nombredel programa
sys.argv[1] # referencia al primer argumento
sys.argv[2] # referencia al segundo argumento
...

Para probar nuestro cliente necesitamos un proceso escuchando peticiones en alg´ n puerto
u
determinado. Como todav´a no hemos construido ning´ n servidor, usaremos la herramienta netcat.
ı
u
Para ello, desde consola ejecutamos:
nc -u -l -p 4000

-u indica que esperamosdatagramas UDP
-l pone netcat en modo escucha
-p indica el puerto por donde escucharemos peticiones
´
Por ultimo ejecuta el analizador de redes wireshack y estudia los paquetes que est´ n intercama
biando cliente y servidor. Ya que wireshack necesita permisos de root, utilizaremos la herramienta
sudo para lanzarlo:
sudo ‘which wireshack‘

2.

Fase 2: Servidor UDP

En esta faseimplementaremos un servidor que realice la misma funci´ n que netcat en la
o
Fase1. Crearemos un nuevo programa, servidorUDP.py, que implemente un servidor UDP. La
estructura del programa es similar al clienteUDP.py a diferencia del argumento pasado por l´nea
ı
de comandos:
python servidorUDP.py 4000

Adem´ s debemos usar el m´ todo bind para escuchar peticiones en el puerto indicado.
a
e
Elservidor implementar´ un servicio de echo, es decir, devolver´ al cliente el mismo string
a
a
´
que este le env´e pero convertido a may´ sculas. Por ejemplo:
ı
u

2

# lanzamos primero el servidor en un terminal
anavarro@host:˜/$ python servidor UDP.py 4000
Esperando peticiones...
mensaje aceptado!
# lamzamos el cliente
anavarro@host:˜/$ python clienteUDP.py localhost 4000
Escriba...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Python
  • Por Qué Python?
  • PYTHON
  • python sonido
  • python
  • python
  • Python
  • Python

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS