Bonjour,
Je bloque complet en ce moment. Cela semble etre un problème tout con! Je vous explique, le paquet 6440 est beaucoup trop long (11820 bytes et quelques) et il semblerait qu'il soit envoyé par dofus en morceaux de 1368 bytes exactement. De ce fait mon programme par dans une boucle infinie folle que je n'arrive pas a fixer, voici ma fonction:
Merci d'avance pour votre aide, j'attends vos réponses!
PS: J'utilise Qt.
Je bloque complet en ce moment. Cela semble etre un problème tout con! Je vous explique, le paquet 6440 est beaucoup trop long (11820 bytes et quelques) et il semblerait qu'il soit envoyé par dofus en morceaux de 1368 bytes exactement. De ce fait mon programme par dans une boucle infinie folle que je n'arrive pas a fixer, voici ma fonction:
Code:
const QList<MessageInfos> Buffer::readPacket(const QByteArray &packetData)
{
QList<MessageInfos> dataInfos;
static bool bug = false;
static int size = 0;
qDebug()<<"-----------PACKET(S) RECU ("<<packetData.size()<<")----------";
while (messageTotalLength < packetData.size())
{
int messageLength = 0;
ushort hiheader = MessageReader(packetData.mid(messageTotalLength,2)).readUShort();
ushort packetID = hiheader >> 2;
ushort lenghtType = hiheader & 3;
MessageReader reader(packetData.mid(2+messageTotalLength,3).data());
if (lenghtType == 1)
messageLength = reader.readByte();
else if (lenghtType == 2)
messageLength = reader.readUShort();
else if (lenghtType == 3)
messageLength = reader.readUInt();
MessageInfos infos;
infos.messageId = packetID;
else
infos.messageData = packetData.mid(2+lenghtType+messageTotalLength, messageLength);
dataInfos<<infos;
messageTotalLength+=messageLength+2+lenghtType;
qDebug()<<"Packet "<<dataInfos.size()<<"- PacketID : "<<packetID<<
" Message's Length : "<<messageLength<<
" LengType : " <<lenghtType;
qDebug()<<" ";
}
}
return dataInfos;
}
Merci d'avance pour votre aide, j'attends vos réponses!
PS: J'utilise Qt.