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 .
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 !!
[
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;
}
]
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 !!