Сервер отправляет "последний кусок" перед последним блоком - PullRequest
0 голосов
/ 09 июня 2018

Я делаю простой скрипт на Python для связи с сервером, чтобы получить XML-файл, содержащий данные игрока, такие как деньги, принадлежащее оружие, хр и т. Д.

Это слишком большой файл для отправки в одномпакет, так что он будет разбит на куски.Однако при использовании этого цикла while:

def parseChunk(chunk):
    if "\r\n" in chunk:
        return chunk.split("\r\n")[1]
    else:
        return chunk

while True:
    data = ssl_sock.recv(4096).decode()

    print(data)

    if "\r\n\r\n" in data and start_chunking is False:
        start_chunking = True
        temp = data.split("\r\n\r\n")[1]
        login_resp += temp.split("\r\n")[1]

    elif start_chunking:
        if data.startswith("0\r\n"):
            print("reached the end")
            break
        login_resp += parseChunk(data)

Он преждевременно print "достиг конца", и значительная часть файла все еще отсутствует.Насколько я знаю, когда сервер завершил отправку чанков, он отправляет «окончательный чанк», равный 0\r\n, который указывает, что больше данных отправляться не будет, верно?Видимо, это не так.Сервер также не отправляет заголовок Content-Length, поэтому я не знаю, какое количество байтов ожидать.

Буду признателен за любую помощь или понимание.Спасибо за ваше время.Если требуется дополнительная информация, пожалуйста, дайте мне знать, прежде чем голосовать.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...