我正在尝试使用as3连接到minecraft服务器。 服务器返回一个我无法理解的ByteArray。 这是一个例子:
«¢00
*H÷
0[ÞJí"
nöí_Jí2Q»÷/½KW9ó`ä¦ËJ!ôàNÄÇgkÉÚY`*u\êRáåLøjTp9ÔÅڕQ̺ÐWÊýƶ[Ð5æsövxåIIæ>Z
u¾Cӷ.C¹iPWûóM×
我尝试了以下解释数据:
bytes.uncompress();
但是我收到了这个错误:
Error: Error #2058: There was an error decompressing the data.
答案 0 :(得分:1)
根据http://wiki.vg/Protocol#Packet_format,Minecraft的数据包格式如下所示。如下所示,您需要解释收到的数据位,然后将压缩数据发送到zlib(如果数据包已压缩)。
Field Name Field Type Notes
------------ ------------ -----------------------------------------------------------------------
Length VarInt Length of packet data + length of the packet ID
Packet ID VarInt
Data Byte Array Depends on the connection state and packet ID, see the sections below
发送Set Compression数据包后, zlib压缩 已启用所有后续数据包。数据包的格式会发生变化 稍微包括未压缩包的大小。
Field Name Field Type Notes
------------ ------------ -----------------------------------------------------------------------
Packet Length VarInt Length of Data + length of Data Length
Data Length VarInt Length of uncompressed Data or 0
Data Byte Array zlib compressed packet, including packet ID (see the sections below)
您如何知道您的数据包已被压缩?根据相同的文档,在发送Set Compression之前,不会启用压缩。