Je viens du coup apporter quelque précisions car mon explication ci-dessus est erroné.
J'ai modifié un peu mon code en utilisant les smartPointer et voici :
if(selector.wait(sf::milliseconds(50)))
{
std::cout << "entrer dans le selector wait" << std::endl;
if (selector.isReady(listener))
{
std::unique_ptr<sf::TcpSocket> client = make_unique<sf::TcpSocket>();
if(listener.accept(*client) == sf::Socket::Done)
{
ip = client->getRemoteAddress().toString();
std::cout << "Client IP : " << client->getRemoteAddress() << " connected" << std::endl;
clientList.emplace_back(std::move(client));
for(auto& clientCurrentList: clientList)
{
if(clientCurrentList->getRemoteAddress().toString() == ip)
{
selector.add(*clientCurrentList);
}
}
}
}else{
for(auto& clientCurrentList: clientList)
{
if(selector.isReady(*clientCurrentList))
{
if(clientCurrentList->receive(packet) == sf::Socket::Done)
{
std::cout << "Client IP : " << clientCurrentList->getRemoteAddress() << "send a packet" << std::endl;
packet >> message;
for(auto& sendClientCurrentList: clientList)
{
packet << message;
sendClientCurrentList->send(packet);
}
}else if(clientCurrentList->receive(packet) == sf::Socket::Error)
{
std::cout << "Client IP : " << clientCurrentList->getRemoteAddress() << "error with a packet" << std::endl;
}
}
}
}
}
En réalité mon problème et que je rentre bien dans "selector.wait(sf::milliseconds(50))" lorsque le sélecteur détecte une action venant du listener mais hors mit ce cas de figure, je ne rentre plus jamais dans cette condition.
Du coup je me demande ou sa pêche puisque avec ce nouveau code, je stock mon nouvel objet TcpSocket() dans mon std::list et dans le sélecteur, je référence le nouvel objet socket :"selector.add(*clientCurrentList)".
Je fais envoyer au client dont la connexion à réussi avec le serveur, un 'sf::packet' contenant une chaine de caractère basique pour tester et pourtant, à chaque bouclage côté serveur, je ne rentre quand même pas dans la condition, comme si le sélecteur avait perdu la trace ou n'avait tout simplement jamais eu la référence aux sockets stockés dans le conteneur et du coup rien n'écoute les dites socket.
Je ne sais pas si j'aurais plus d'aide ou de succès qu'a mon premier post
mais sa ne coute rien d'essayer. Je continue d'investiguer de mon côté.
Merci par avance.