if(selector.wait(sf::milliseconds(100)))
{
if (selector.isReady(listener))
{
client = new sf::TcpSocket;
if(listener.accept(*client) == sf::Socket::Done)
{
clientList.emplace_back(client);
for(std::list<std::unique_ptr<sf::TcpSocket>>::iterator it = clientList.begin(); it != clientList.end(); ++it)
{
if(**it == *client)
{
selector.add(**it);
}
}
std::cout << "Client IP : " << client->getRemoteAddress() << "connected" << std::endl;
}else{
delete client;
}
}
if(!clientList.empty())
{
for(auto& clientCurrentList: clientList)
{
std::cout << selector.isReady(*clientCurrentList) << std::endl;
if(selector.isReady(*clientCurrentList))
{
std::cout << "test2" << std::endl;
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;
}
}
}
}
}
if(selector.isReady(*clientCurrentList))
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;
}
}
}
}
}