Comment garder une socket ouverte jusqu'à ce que le client la ferme?

J'ai simple python serveur et le client.

Serveur:

import SocketServer
import threading


class MyTCPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()
        print str(self.client_address[0]) + " wrote: "
        print self.data
        self.request.send(self.data.upper())


if __name__ == "__main__":
    HOST, PORT = "localhost", 3288
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
    server.serve_forever()

Client:

import socket
import sys
from time import sleep

HOST, PORT = "localhost", 3288
data = "hello"

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    sock.connect((HOST, PORT))
    sock.send(data + "\n")
    received = sock.recv(1024)

    sleep(10)

    sock.send(data + "\n")
    received = sock.recv(1024)

    sleep(10)

    sock.send(data + "\n")
    received = sock.recv(1024)

finally:
    sock.close()

Ici est le résultat que j'obtiens:

Serveur:

>python server.py
127.0.0.1 wrote:
hello

Client:

>python client.py
Traceback (most recent call last):
  File "client.py", line 18, in <module>
    received = sock.recv(1024)
socket.error: [Errno 10053] An established connection was aborted by the software in your host machine

Je l'ai essayé sur une machine linux. Le serveur reçoit un seul message, puis j'obtiens une erreur sur le recv déclaration de la deuxième message. Je viens de commencer l'apprentissage de la mise en réseau sur python, mais je pense que le serveur est la fermeture de la socket pour une raison quelconque. Comment puis-je corriger cela?

source d'informationauteur Bruce