Мне нужно очистить буфер сокетов, чтобы в нем не было всего «журнала» сокетов.Я должен работать только с последним ответом на мой последний запрос.
Я использую функцию для получения всех данных.Я понимаю, что должен как-то очистить свой буфер сокетов внутри этой функции, но не могу найти способ сделать это.
def recv_timeout(the_socket, timeout=2):
# делаем сокет не блокируемым
the_socket.setblocking(0)
total_data = []
data = ''
begin = time.time()
while 1:
if total_data and time.time() - begin > timeout:
break
elif time.time() - begin > timeout * 2:
break
try:
data = the_socket.recv(8192)
if data:
total_data.append(data)
begin = time.time()
else:
time.sleep(0.1)
except:
pass
return b''.join(total_data)
Когда я отправляю запрос как:
client_socket.sendall('list\r\n'.encode("utf-8"))
Я получаю нормальный ответ на мой запрос.Но когда я набираю
client_socket.sendall('recv 1\r\n'.encode("utf-8"))
сразу после предыдущего запроса, я получаю ответ 1 + ответ 2, но мне нужен только ответ 2.
Большое спасибо!