Python socket receive - входящие пакеты всегда имеют разный размер
Я использую модуль SocketServer для TCP-сервера. Я испытываю некоторые проблемы здесь сrecv()
функция, потому что входящие пакеты всегда имеют разный размер, поэтому, если я укажуrecv(1024)
(Я попытался с большим значением и меньшим), он зависает после 2 или 3 запросов, потому что длина пакета будет меньше (я думаю), и затем сервер застревает до истечения времени ожидания.
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()
Если клиент отправляет несколько запросов через один и тот же исходный порт, но сервер застревает, любая помощь будет принята с благодарностью, спасибо!