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

Auteur Sujet: Problème de plantage et de connexion  (Lu 2154 fois)

0 Membres et 1 Invité sur ce sujet

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Problème de plantage et de connexion
« le: Avril 14, 2013, 07:51:04 pm »
Bonjour, je m'essaye aux réseaux pour un petit projet qui me tient à coeur depuis environ un an.
C'est un jeu que j'avais codé sur Casio 35+ mais qui était moche (on est sur Casio), imprécis (pas de pixels, j'utilisais les cases entières) ,injouable à deux , pas assez de mémoire, mauvaise gestion des events et une IA stupide (aléatoire).

Enfin bref, le jour où j'ai crée ce jeu pour la première fois, je savais que sur Casio il serait pourri, mais le concept en réseau sera bluffant, et je le partagerais dès que possible :)

En attendant, il va me servir d'entraînement pour manipuler le réseau.

Mon problème : Je lance le serveur, ensuite je lance un client, connexion réussie, je lance un deuxième client et .... plantage du client et de l'autre qui attends toujours une réponse..

Voici mon code : SERVEUR :

    int nbConnect = 0;

    sf::UdpSocket socket1;
    socket1.bind(55001);
    sf::UdpSocket socket2;
    socket2.bind(55002);

    sf::IpAddress sender1;
    sf::IpAddress sender2;
    while(nbConnect < 2)
    {
        char buffer[1024];
        std::size_t received = 0;
        unsigned short port;
        if(nbConnect == 0)
        {
            if(socket1.receive(buffer, sizeof(buffer), received, sender1, port) == sf::Socket::Status::Done)
            {
                std::string message = "1";
                nbConnect++;
                std::cout << "1 client" << std::endl;
            }
        }
        if(nbConnect == 1)
        {
            if(socket2.receive(buffer, sizeof(buffer), received, sender2, port) == sf::Socket::Status::Done)
            {
                std::string message = "2";
                nbConnect++;
                std::cout << "2 client" << std::endl;
            }
        }
    }

    socket1.send(x1.c_str(), x1.size() + 1, sender1,55000);
    socket1.send(x2.c_str(), x2.size() + 1, sender1,55000);
    socket2.send(x1.c_str(), x1.size() + 1, sender2,55000);
    socket2.send(x2.c_str(), x2.size() + 1, sender2,55000);
 

CLIENT :


    //On reçoit sur le port 55000
    sf::UdpSocket socket;
    socket.bind(55000);

    //On envoit n'importe quoi sur le port pour que le serveur obtienne notre adresse, si marche pas, on teste le port 2
    int Port = 55001;
    sf::IpAddress Server = sf::IpAddress::LocalHost;
    std::string message = "0";
    int numJoueur = 1;
    if(socket.send(message.c_str(), message.size() + 1, Server, Port) != sf::Socket::Status::Done)
    {
        Port++;
        numJoueur++;
        socket.send(message.c_str(), message.size() + 1, Server, Port);
    }

    //Reception des positions des vaisseaux
    char buffx1[3];
    char buffx2[3];

    std::size_t received = 0;
    sf::IpAddress sender; //Adresse du serveur
    unsigned short port; //Port du serveur

    socket.receive(buffx1, sizeof(buffx1), received, sender, port);
    socket.receive(buffx2, sizeof(buffx2), received, sender, port);

    v1.setPosition(StrToNb(buffx1), 50);
    v2.setPosition(StrToNb(buffx2), 330);

 



Il est fort probable que je n'utilise pas bien la gestion des sockets et des ports ...

Merci d'avance :)
« Modifié: Avril 14, 2013, 09:25:15 pm par Cmdu76 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de plantage et de connexion
« Réponse #1 le: Avril 14, 2013, 08:22:49 pm »
Tu devrais travailler sur (et nous soumettre) un code minimal, ce sera beaucoup plus simple à debugger que tout le bouzin, qui contient beaucoup de code sans rapport avec le problème.
Laurent Gomila - SFML developer

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Re : Problème de plantage et de connexion
« Réponse #2 le: Avril 14, 2013, 09:13:35 pm »
Je fais un edit du post original alors, désolé...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de plantage et de connexion
« Réponse #3 le: Avril 14, 2013, 10:54:41 pm »
Ca plante sur quelle ligne, avec quel message d'erreur, et quelle est la pile d'appels ?
Laurent Gomila - SFML developer

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Re : Problème de plantage et de connexion
« Réponse #4 le: Avril 14, 2013, 11:55:04 pm »
Justement, je n'ai pas d'erreur lors de la compilation... Je pense juste que j'utilise mal les sockets...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de plantage et de connexion
« Réponse #5 le: Avril 15, 2013, 08:46:40 am »
Ce que je voulais dire c'est : utilise ton debugger. C'est à ça que ça sert.
Laurent Gomila - SFML developer

 

anything