Я использую модуль 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()
Если клиент отправляет многократные запросы по одному и тому же исходному порту, но сервер застревает, любая помощь будет очень оценена, спасибо!