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 :

Cliquez pour révéler Cliquez pour masquer

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_++;
         }
      }

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 :

_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 !

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 a répondu à ça.

    Tu as regroupé tous les unsigned read dans une seule fonction ? Joliment fait en tout cas, je vais regarder :)

    MyHand

    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...

    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

    J'ai mit tes IO pour tester et ça me sort la même erreur... bizarre.

    Oui regarde a la fin c'est ReadByte() pas ReadSByte()

    En effet merci, mais l'erreur est plus haut ^^

    Ok je suis un macaque, j'avais oublié de transmettre mon buffer à mes I/O... :'(

    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 !