connection.recv не может прочитать буфер - PullRequest
0 голосов
/ 23 сентября 2018

server.py

while True:
        if buffer_len >= 100:
            connection.sendall("something")
        else:
            buffer_read = connection.recv(10)
            buffer_len = buffer_len + len(buffer_read)

На клиенте я отправил запрос (длина = 100) и получил ответ один раз.Но когда я отправил второй запрос, строка "buffer_read = connection.recv(10)" не дала никакого вывода.Похоже, что он ожидает что-то, что будет записано в буфере (бесконечный цикл).Итак, мой вопрос:

  1. почему conn.rev (10) ожидает, даже если клиент записал свой запрос в буфер?
  2. Это связано с асинхронностью?клиент должен отправить свой запрос до того, как сервер начнет ждать?

Есть идеи, как решить эту проблему?

Редактировать: Вот код клиента

for tcp in Q
    self.sock.sendall(tcp.payload)
    buffer_len = 0
    while response_len > buffer_len:
        data = self.sock.recv(self.buff_size)
        buffer_len += len(data)
...