Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [SMFL1.6]Transférer des paquets et des paquets extensibles.  (Lu 2803 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
[SMFL1.6]Transférer des paquets et des paquets extensibles.
« le: Juillet 30, 2012, 05:30:43 pm »
Salut,
je m'explique : j'ai une classe qui dérive de sf::Packet (EncryptedPacket) qui me permet de crypter les données que j'envoie, et j'utilise la classe sf::Packet pour transférer des données non cryptées. (Donc en gros j'utilise les 2 a la fois.)
Malheureusement lorsque j'envoie des données de type EncryptedPacket depuis le client, le serveur les interprète comme si c'étaient des données de type sf::Packet et donc ne rentre pas dans la méthode Receive de ma classe dérivée...

Bref je vais mettre du code, je pense que vous comprendrez mieux ce que j'essaye de faire :
Le serveur ne fait rien d'autre que d'intercepter les messages envoyé par le client, et il envoie la clé publique à la demande du client pour que le client puisse ensuite crypter les messages qu'il envoie.
void SrkServer::run () {
    while (true) {
        unsigned int nbSockets = selector.Wait();

        for (unsigned int i = 0; i < nbSockets; ++i)
        {
            SocketTCP socket = selector.GetSocketReady(i);

            if (socket == listner) {

                IPAddress clientAddress;
                SocketTCP client;
                socket.Accept(client, &clientAddress);
                cout<<"Client connected : "<<clientAddress<<endl;
                selector.Add(client);
            } else {
                Packet packet;
                if (socket.Receive(packet) == Socket::Done) {
                    cout<<typeid(packet).name()<<endl;
                    string message;
                    packet>>message;
                    if (message == "GetPbKey") {
                        packet.Clear();
                        string message = Rsa::getPbKeyString();
                        packet<<message;
                        socket.Send(packet);
                    } else {
                        string message;
                        packet>>message;
                        cout<<"Client said : "<<message<<endl;
                    }
                } else {
                    //channels[0]->removeClient(socket);
                    selector.Remove(socket);
                }
            }
        }
    }
}
 
J'ai fait un typeId sur le sf::Packet pour voir et les packets sont toujours de type sf::Packet et non de type EncryptedPacket

Y a t'il un moyen de pouvoir recevoir ou d'envoyer des paquets de différentes sortes  avec la SFML ? 
« Modifié: Juillet 30, 2012, 05:33:02 pm par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SMFL1.6]Transférer des paquets et des paquets extensibles.
« Réponse #1 le: Juillet 30, 2012, 07:14:07 pm »
Ca ne marche pas comme ça :)

SFML reçoit dans le type de paquet que tu lui files, ni plus ni moins. Si tu veux recevoir dans un EncryptedPacket il faut que tu appelles Receive avec un EncryptedPacket.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : [SMFL1.6]Transférer des paquets et des paquets extensibles.
« Réponse #2 le: Juillet 30, 2012, 08:52:11 pm »
Ok, j'ai fait cela :

Packet *packet;
                if (pbKeySend) {
                    packet = new EncryptedPacket();
                } else {
                    packet = new Packet();
                }
 
En gros si le serveur a déjà envoyer la clé, il ne reçois plus que des données cryptée donc...
Moi je pensais que l'on pourrait envoyer un pointeur à la socket et faire comme une sorte de polymorphisme, mais en effet ça na marche pas comme ça.

Par contre, j'ai l'impression que il rajoute des choses dans les packets lors de l'envoi/lé réception car les données que j'aie dans la méthode OnReceive de ma classe EncryptedPacket ne sont pas les mêmes que celle que j'ai lorsque j'extrais les donnée de mes encrypted packet, du coup mon système de cryptage RSA ne marche pas, je vais devoir crypter tout le message d'un coup et l'envoyer...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SMFL1.6]Transférer des paquets et des paquets extensibles.
« Réponse #3 le: Juillet 30, 2012, 10:15:34 pm »
Citer
Par contre, j'ai l'impression que il rajoute des choses dans les packets lors de l'envoi/lé réception car les données que j'aie dans la méthode OnReceive de ma classe EncryptedPacket ne sont pas les mêmes que celle que j'ai lorsque j'extrais les donnée de mes encrypted packet
Si tu as bien transmis les données dans OnReceive, si, ce sont les mêmes.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : [SMFL1.6]Transférer des paquets et des paquets extensibles.
« Réponse #4 le: Juillet 31, 2012, 09:17:21 am »
Exact, j'avais mal transféré la clé publique..., c'était pour ça que je n'avais pas les même données, maintenant ça marche.  :D


 

anything