Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - leenheart

Pages: [1]
1
Réseau / [resolut]Packet tcp qui ne veut pas partir
« le: Août 30, 2016, 01:44:02 pm »
Je suis débutant  :). J'ai coder un serveur et un client. Le client arrive a se connecter je l'enregistre tout va bien, mais lorsque je veux que le serveur envoie un packet celui ci ne part jamais. Si quelqu'un peut m'aider je le remercie d'avance  :).
[
serveur:

sf::TcpListener listener;
listener.setBlocking(false);
if (listener.listen(53000) != sf::Socket::Done)
{
     cout << "erreur" << endl;
}

while (window.isOpen())  //tant que la fenetre est ouverte
    {
        sf::Event event;
        while (window.pollEvent(event))
            {
                if (event.type == sf::Event::Closed)    // si on clique sur la croix ferme la fenetre
                    window.close();
            }
//serveur
            sf::TcpSocket client1;
            sf::TcpSocket client2;
            sf::TcpSocket client3;
            sf::TcpSocket client4;
            sf::TcpSocket client5;
            switch(nbrClient)
            {
            case 0:
                if (listener.accept(client1) == sf::Socket::Done)
            {
                nbrClient+=1;
                cout << "nouveau client connecter ! " << endl;
            }
            break;

            case 1:
                if (listener.accept(client2) == sf::Socket::Done)
            {
                nbrClient+=1;
                cout << "nouveau client connecter ! " << endl;
            }
            break;
            case 2:
                if (listener.accept(client3) == sf::Socket::Done)
            {
                nbrClient+=1;
                cout << "nouveau client connecter ! " << endl;
            }
            break;
            case 3:
                if (listener.accept(client4) == sf::Socket::Done)
            {
                nbrClient+=1;
                cout << "nouveau client connecter ! " << endl;
            }
            break;
            case 4:
                if (listener.accept(client5) == sf::Socket::Done)
            {
                nbrClient+=1;
                cout << "nouveau client connecter ! " << endl;
            }
            break;
            }

if (envoiNewMap)
                {
                    cout << "envoie map activer" << endl;
for (int i(0); i <= nbrClient; ++i)
        {
             cout << i << endl;

                sf::Packet packet;
                string mapp("mapChanger");
                packet << mapp;
                sf::Packet packett;
                packett << fileMap;

            switch(i)
            {
            case 0:
                cout << "case 0" << endl;
                break;
            case 1:
                 cout << "case 1" << endl;
                if (client1.send(packet) == sf::Socket::Done)
                {
                    cout << "packet envoyer au client numero 1" << endl;
                }
                else
                {
                    i -= 1;
                    cout << "rater";
                }
                if (client1.send(packett) == sf::Socket::Done)
                {
                    cout << "packet envoyer au client numero 1"  << endl;
                }
            break;
            case 2:
                if (client2.send(packet) == sf::Socket::Done)
                {
                    cout << "packet envoyer au client numero 2" << endl;
                }
                else
                {
                    cout << "rater";
                }
                if (client2.send(packett) == sf::Socket::Done)
                {
                    cout << "packet renvoyer au client numero 2"  << endl;
                }
            break;
            case 3:
                if (client3.send(packet) == sf::Socket::Done)
                {
                    cout << "packet envoyer au client numero 3" << endl;
                }
                else
                {
                    cout << "rater";
                }
                if (client3.send(packett) == sf::Socket::Done)
                {
                    cout << "packet envoyer au client numero 3"  << endl;
                }
            break;
            case 4:
                if (client4.send(packet) == sf::Socket::Done)
                {
                    cout << "packet envoyer au client numero 4" << endl;
                }
                else
                {
                    cout << "rater";
                }
                if (client4.send(packett) == sf::Socket::Done)
                {
                    cout << "packet envoyer au client numero 4"  << endl;
                }
            break;

            }

            }
            envoiNewMap = false;
        }
]

edit : La fonction send renvoie le statu ERROR, j'ai regarder dans la doc mais elle ne dit rien de plus que : "il y a une erreur..." je comprend vraiment pas ou est le probleme  :'(. Toute aides est bonne a prendre !!

Pages: [1]