Python-Socket-Empfang - eingehende Pakete haben immer eine andere Größe

Ich verwende das SocketServer-Modul für einen TCP-Server. Ich habe hier ein Problem mit demrecv() funktioniere, weil die eingehenden pakete immer eine andere größe haben, also wenn ich spezifiziererecv(1024) (Ich habe versucht, mit einem größeren Wert und einem kleineren Wert zu arbeiten.) Nach 2 oder 3 Anforderungen bleibt der Server hängen, da die Paketlänge geringer ist (glaube ich). Dann bleibt der Server bis zu einem Timeout hängen.

class Test(SocketServer.BaseRequestHandler):

def handle(self):

   print "From:", self.client_address

   while True:    

     data = self.request.recv(1024)
     if not data: break

     if data[4] == "\x20":              
       self.request.sendall("hello")
     if data[4] == "\x21":
       self.request.sendall("bye")
     else:
       print "unknow packet"
   self.request.close()
   print "Disconnected", self.client_address

launch = SocketServer.ThreadingTCPServer(('', int(sys.argv[1])),Test)

launch.allow_reuse_address= True;

launch.serve_forever()

Wenn der Client mehrere Anfragen über denselben Quellport sendet, der Server jedoch nicht mehr reagiert, wäre jede Hilfe sehr dankbar.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage