M1. Outils de l'internet, année 2006/2007

TP 1 - svn, python, sockets, HTTP

V. Poupet, A. Ballier

D'après le TP de 2007 par N. Ollinger, E. Jeandel et V. Bernardi

Calculez la somme des carrés des entiers de 1 à n.

La somme des carrés des entiers de 1 à n
#!/usr/bin/env python

def sum_carres(n):
        """Calcule la somme des entiens de 1 a n"""
        a = 0
        for i in range(1,n+1):
                a+=i*i
        return a

Écrivez une fonction qui prend un entier n en entrée et qui renvoie la liste des nombres premiers plus petits que n.

Renvoie la liste des entiers premiers plus petits que n
#!/usr/bin/env python

# From: 
# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/366178

def primes(n):
	if n==2: return [2]
	elif n<2: return []
	s=range(3,n+1,2)
	mroot = n ** 0.5
	half=(n+1)/2-1
	i=0
	m=3
	while m <= mroot:
		if s[i]:
			j=(m*m-3)/2
			s[j]=0
			while j<half:
				s[j]=0
				j+=m
		i=i+1
		m=2*i+3
	return [2]+[x for x in s if x]

Trouvez une commande python qui vous permettra de supprimer le répertoire débile que vous venez malencontreusement de créer.

Créér et effacer un répertoire
#!/usr/bin/env python

import os
print "Creation du repertoire"
os.mkdir("nouveau_repertoire")
print os.listdir(".")

print "Maintenant on l'efface"
os.rmdir("nouveau_repertoire")
print os.listdir(".")

Dans deux interpréteurs python différents, créez deux sockets TCP, l'une en mode serveur sur le port 5555, l'autre en mode client, devant se connecter sur le port 5555.

Serveur
#!/usr/bin/env python

# Greatly based on http://docs.python.org/lib/socket-example.html

import socket

HOST = ''                 # Symbolic name meaning the local host
PORT = 5555               # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
        data = conn.recv(1024)
        if not data: break
        print 'Received', repr(data)
        conn.send(data)
conn.close()
Client
#!/usr/bin/env python

# Greatly based on http://docs.python.org/lib/socket-example.html

import socket

HOST = 'localhost'    # The remote host
PORT = 5555           # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', repr(data)

Lancez un serveur HTTP qui sert le répertoire contenant le fichier HTML que vous avez écrit précédemment ainsi que le fichier PNG qu'il réfère. Testez votre serveur avec le navigateur Mozilla Firefox, et non pas Mozilla.

Serveur HTTP de base
#!/usr/bin/env python

import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()