C# [MITM] Paquet 42 - Impossible de lire au-delà de la fin du flux

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#1
Bonjour,

Je stagne sur une erreur lors de la lecture de l'ID du serveur : System.IO.EndOfStreamException: Impossible de lire au-delà de la fin du flux.

J'ai cherché sur le forum, il doit s'agir d'une erreur dans les I/O mais je ne vois pas où.
Je veux bien l'avouer que j'ai du mal sur tout ce qui est I/O, j'ai récupéré des existants.
Mais j'ai comparé avec le client, le reader fait pareil.

SelectedServerDataMessage.cs : https://github.com/Rtxx1/MyBot/blob/master/Protocol/Connection/SelectedServerDataMessage.cs
SelectedServerDataMessage.as :
Code:
public function deserializeAs_SelectedServerDataMessage(param1:ICustomDataInput) : void
      {
         var _loc4_:int = 0;
         this._serverIdFunc(param1);
         this._addressFunc(param1);
         this._portFunc(param1);
         this._canCreateNewCharacterFunc(param1);
         var _loc2_:uint = param1.readVarInt();
         var _loc3_:uint = 0;
         while(_loc3_ < _loc2_)
         {
            _loc4_ = param1.readByte();
            this.ticket.push(_loc4_);
            _loc3_++;
         }
      }
Code:
private function _serverIdFunc(param1:ICustomDataInput) : void
      {
         this.serverId = param1.readVarUhShort();
         if(this.serverId < 0)
         {
            throw new Error("Forbidden value (" + this.serverId + ") on element of SelectedServerDataMessage.serverId.");
         }
      }
I/O : https://github.com/Rtxx1/MyBot/tree/master/IO

L'erreur est à la ligne 88 :
C#:
_serverId = _reader.ReadVarUhShort();
Sur divers sources, l'id du serveur se récupère par un ReadShort(). J'ai donc essayé mais l'ID se retrouve à -1.

Quelqu'un peut me dire où je fais une erreur ?

Merci d'avance !
 
Inscrit
3 Juillet 2013
Messages
13
Reactions
0
#3
Si je ne me trompe pas, lorsque vous sélectionnez le serveur retourne effectivement -1, ce qui est le serveur de connexion, et peu de temps après, vous envoie un message de connexion à une autre adresse (213.248.126.76). À partir de ce moment que votre compte est authentifié et vous écouterez le serveur dans une autre connexion socket. Je crois que les prochaines étapes pour authentifier le billet et sélectionnez le caractère.
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#4
Tu as regroupé tous les unsigned read dans une seule fonction ? Joliment fait en tout cas, je vais regarder :)

Si je ne me trompe pas, lorsque vous sélectionnez le serveur retourne effectivement -1, ce qui est le serveur de connexion, et peu de temps après, vous envoie un message de connexion à une autre adresse (213.248.126.76). À partir de ce moment que votre compte est authentifié et vous écouterez le serveur dans une autre connexion socket. Je crois que les prochaines étapes pour authentifier le billet et sélectionnez le caractère.
C'est pas dans les sources du client en tout cas...
 

DevChris

Membre Actif
Inscrit
12 Avril 2017
Messages
138
Reactions
24
#5
Oui je trouve ça plus simple quand on traduis à la main, comme j'ai fait la, mais je commence mon ProtocolBuilder et je pense qu'il serais plus judicieux de faire comme Dofus .. Sinon oui tu peux Check sur mon projet il se connecte très bien en jeu sur le personnage pour le moment
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#6
J'ai mit tes IO pour tester et ça me sort la même erreur... bizarre.
 

DevChris

Membre Actif
Inscrit
12 Avril 2017
Messages
138
Reactions
24
#7
Oui regarde a la fin c'est ReadByte() pas ReadSByte()
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#8
En effet merci, mais l'erreur est plus haut ^^
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#9
UP ? :(
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#10
Ok je suis un macaque, j'avais oublié de transmettre mon buffer à mes I/O... :'(
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#11
Essaye d'afficher les paquets que tu reçois avant qu'ils soient traités :)
Je pense que quand on commence les bots dofus, on passe 50% du temps à lire les sources, 40% à résoudre des problèmes et moins de 10% à coder !
 
Haut Bas