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.