Gniazdo Python odbiera - pakiety przychodzące zawsze mają inny rozmiar
Używam modułu SocketServer dla serwera TCP. Mam tu pewne problemy zrecv()
funkcja, ponieważ przychodzące pakiety zawsze mają inny rozmiar, więc jeśli określęrecv(1024)
(Próbowałem z większą wartością i mniejszą), utknie po 2 lub 3 żądaniach, ponieważ długość pakietu będzie mniejsza (tak myślę), a następnie serwer utknie do czasu oczekiwania.
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()
Jeśli klient wyśle wielokrotne żądania przez ten sam port źródłowy, ale serwer utknie, każda pomoc byłaby bardzo doceniana, dziękuję!