服务器在去年春天之前发送“最后一块”

2024-05-20 00:38:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个简单的Python脚本来与服务器通信,以获得一个包含玩家数据(如金钱、拥有的武器、xp等)的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“到达了结尾”,文件的大部分仍然丢失。据我所知,当服务器发送完数据块后,它会发送“final chunk”,即0\r\n,这表示不会再发送数据了?显然不是这样。服务器也没有发送Content-Length头,所以我不知道需要多少字节。你知道吗

任何帮助或见解都将不胜感激。谢谢你的时间。如果需要更多的信息,请在投票前告诉我。谢谢。你知道吗


Tags: 文件数据in服务器truedatareturnif