Hey !
Je suis depuis un petit bout de temps maintenant sur la deserz. du HelloConnectMessage, j'ai bien tout traduit, ça ne me donne aucune erreur et un résultat plutot cohérent, mais comme je suis un noob, je préfère vérifier que tout marche bien en comparant avec un sniffer (par Alexandre).
Et le problème, c'est qu'avec le sniffer, mon client me sort 304 clefs, alors que moi je n'en sors que 30, pourtant j'ai l'impression de tout avoir bien traduit, alors j'ai cherché pendant au moins 3 - 4 heurs sur le forum et internet mais je n'ai rien trouvé qui puisse m'aider.. :/
Voici mon code :
function deserializeAs_HelloConnectMessage (packetInfos, callback) {
let saltLen = packetInfos.packetBody.readInt8(1)
let saltBuf = packetInfos.packetBody.slice(2, saltLen + 2)
let salt = saltBuf.toString('utf8')
let key = []
let bytesToRead = Buffer.byteLength(saltBuf)
let byteHandler
for (var i = 0; i < bytesToRead; i++) {
byteHandler = saltBuf.readInt8(i)
key.push(byteHandler)
}
console.log(key)
let rtrn = { saltLen: saltLen, salt: salt, key: key }
callback(3, rtrn, packetInfos)
return rtrn
}
Et le code du client
Cliquez pour révéler
Cliquez pour masquer
public function deserializeAs_HelloConnectMessage(param1:ICustomDataInput) : void
{
var _loc4_:int = 0;
this.salt = param1.readUTF();
var _loc2_:uint = param1.readVarInt();
var _loc3_:uint = 0;
while(_loc3_ < _loc2_)
{
_loc4_ = param1.readByte();
this.key.push(_loc4_);
_loc3_++;
}
}
Pourtant je me suis documenté sur les méthodes AS3 et .readByte(), comment son nom l'indique lis 1 byte == 8 octets, donc .readInt8() me parait légitime.. Sur la doc AS3 pour .readUTF8(), ils disent que la longueur du string doit être avant le string soit 00 20 == 32 dec. donc lire 32 clefs me parait aussi légitime..
Arf! c'est si confus dans ma tête ! :'(