VB/VB.Net Problème Connexion

A

Anonymous

Invité
#1
Bonjour,
J'essaie de découvrir le monde du socket et j'ai beaucoup (vraiment beaucoup) de mal. J'ai fais mes petites fonctions :
Code:
        Select Case PacketID
            Case 1
                
            Case 3
                Dim EncryptedPassword As String = RSAManager.Encrypt(reader.ReadString & "*******")
                Dim writer As New DataWriter()

                'MsgBox(reader.ReadString)

                writer.WriteInt(2)
                writer.WriteInt(5)
                writer.WriteInt(3)
                writer.WriteInt(53948)
                writer.WriteInt(2)
                writer.WriteInt(0)
                writer.WriteString("fr")
                writer.WriteString("account")
                writer.WriteString(EncryptedPassword)
                writer.WriteShort(0)
                writer.WriteBool(True)
                writer.WriteBool(True)
                writer.WriteBool(False)
                socket.Send(writer.Pack(4))
            Case 20
                MessageBox.Show("Authentificationfail")

            Case 22
                reader.ReadByte()
                MessageBox.Show("GG  " + reader.ReadString())
Mais ça ne fonctionne pas : le serveur renvoi plein de paquets vides.

Merci d'avance.
 
A

Anonymous

Invité
#2
Bonjour,

Il me semble, je peux me tromper, que les sources ne sont plus celle-ci, regarde dans le invoker si c'est bien ça .
 
A

Anonymous

Invité
#3
Je vois qu'il utilise une fonction pour la version mais je penses que ça revient au même d'utiliser ça non ?
 
A

Anonymous

Invité
#4
Si tu regardes bien les sources :

Code:
public function serializeAs_IdentificationMessage(param1:IDataOutput) : void
        {
            var _loc_2:uint = 0;
            _loc_2 = BooleanByteWrapper.setFlag(_loc_2, 0, this.autoconnect);
            _loc_2 = BooleanByteWrapper.setFlag(_loc_2, 1, this.useCertificate);
            _loc_2 = BooleanByteWrapper.setFlag(_loc_2, 2, this.useLoginToken);
            param1.writeByte(_loc_2);
            this.version.serializeAs_Version(param1);
            param1.writeUTF(this.lang);
            param1.writeUTF(this.login);
            param1.writeShort(this.credentials.length);
            var _loc_3:uint = 0;
            while (_loc_3 < this.credentials.length)
            {
                
                param1.writeByte(this.credentials[_loc_3]);
                _loc_3 = _loc_3 + 1;
            }
            param1.writeShort(this.serverId);
            return;
        }// end function
Tu ne fait pas du tout la même chose, adapte ton code avec ça

Bon courage
 
A

Anonymous

Invité
#5
On est vraiment obliger de calquer le client ? Sur les sources de OverEdge c'est du calquer de chez calquer. Il ne faudrait pas plutôt faire un code perso ?
 
A

Anonymous

Invité
#6
Tu fait se que tu souhaite mais tu doit envoyer la même chose que le client, ça c'est obligatoire, tu n'as pas de Write.Boolean dans les sources, c'est normal que le serveur n’apprécie pas
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#7
:) et c'est difficile d'envoyer juste un bit a la fois (alors qu'on communique en octets) , pour ce qui est de la source overedge elle est tres loin d'etre calqué sur les sources du client (et crois mois j'en sais quelquechose) mais il y a toutes les fonctions pour envoyer un bit , un entier etc ... et c'est l'essenciel
 
A

Anonymous

Invité
#8
Merci pour tout, je commence a y voir plus clair dans le fonctionnement de D. Il sont quand même chiant avec leur cryptage ^^
 
Haut Bas