Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: Cmdu76 le Avril 14, 2013, 07:51:04 pm

Titre: Problème de plantage et de connexion
Posté par: Cmdu76 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 :)
Titre: Re : Problème de plantage et de connexion
Posté par: Laurent 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.
Titre: Re : Problème de plantage et de connexion
Posté par: Cmdu76 le Avril 14, 2013, 09:13:35 pm
Je fais un edit du post original alors, désolé...
Titre: Re : Problème de plantage et de connexion
Posté par: Laurent 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 ?
Titre: Re : Problème de plantage et de connexion
Posté par: Cmdu76 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...
Titre: Re : Problème de plantage et de connexion
Posté par: Laurent le Avril 15, 2013, 08:46:40 am
Ce que je voulais dire c'est : utilise ton debugger. C'est à ça que ça sert.