Amis du net, Bonjour!

J'ai dans le cadre de mes études, un petit programme à écrire qui est une approche aux notions de sockets etc.. et je dois simuler un mini "serveur" qui est lancé et est en attente de connexion. Je lance le serveur sur un premier terminal et me connecte via telnet sur un autre terminal au "serveur" (Le code est bien modeste je l'avoue mais je suis phase d'apprentisage xD)

Le problème est que lorsque le client ferme ou le serveur ferme la connection, lorsque je veux relancer le programme serveur, j'ai l'erreur suivante socket.error: (98, 'Adress already in use')

Je ne vois ou est le problème, pourtant le socket serveur est fermer correctement avec close ().

Merci de m'éclairer, voilà le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!usr/bin/env python
 
import os, sys, socket, select
host = ''
port = 5000
add = (host, port) 
 
server = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
server.bind (add)  
server.listen (1) 
input = [server]
run = 1
 
 
 
print "Serveur connecte avec succes depuis %s sur le port %d...\n" % (host, port)
 
while run:
    read, write, error = select.select (input, [], [], 5) 
    for i in read:
        if i == server:
            raw_input ("Appuyez sur entree pour continuer...\n")
            client, (hostc, portc)  = server.accept () 
            input.append (client) 
            print "Client %s connecte avec succes depuis le port %d...\n" % (hostc, portc)
 
        else:  
            msg = i.recv(100) 
            test = "TEST"
            stop = "STOP"
            if (test.rstrip () in msg.rstrip ()):
                os.write(1, "test reussi...\n")
            elif (msg.rstrip() == stop.rstrip()):
                os.write (1, "Serveur arreter...BYE\n")
                #i.close ()
                #input.remove (i)
                run = 0
                #server.close () 
 
            else: 
                print ("Aucun message...BYE")
               # i.close ()
                #input.remove (i)
                run = 0
 
server.close ()
print "Server shutdown...BYE"