ici est mon petit serveur web sale:Python: Fermeture d'une prise déjà ouvert par un programme python précédent ou sale tour pour fermer une prise
class Serverhttp:
def __init__(self):
self.GET = re.compile("GET.*?HTTP")
self.POST = re.compile("POST.*?HTTP")
try :
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 36000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)
except :
time.sleep(2)
self.__init__()
# Listen for incoming connections
sock.listen(1)
off = 2
self.message = ""
while True:
# Wait for a connection
print >>sys.stderr, 'waiting for a connection'
if off == 2 or off == 1:
connection, client_address = sock.accept()
try:
print >>sys.stderr, 'connection from', client_address
# Receive the data in small chunks and retransmit it
while True:
data = connection.recv(1024)
print >>sys.stderr, 'received "%s"' % data
if data:
self.message = self.traitement(data)
connection.sendall(self.message)
connection.close()
connection, client_address = sock.accept()
else:
print >>sys.stderr, 'no more data from', client_address
break
finally:
# Clean up the connection
connection.close()
sock.close()
del(sock)
il fonctionne plus ou moins, mais si je quitte le serveur le port est toujours ouvert et je ne peux pas me reconnecter sur le même port. Donc je cherche un moyen de tuer le précédent ou de sortir de manière agréable. Cordialement et merci
Bussiere
-1: Écrire le vôtre lorsque vous pourriez utiliser 'wsgiref' ou' BaseHTTPServer' qui sont déjà intégrés dans les bibliothèques. Si vous n'utilisez pas le serveur HTTP intégré, arrêtez d'utiliser la bibliothèque de socket intégrée et utilisez directement le pilote '/ dev/eth'. –