void Server::Do_Server() { SOCKET Socket; int i; int res; this->tv.tv_sec = 0; this->tv.tv_usec = 1000 * 1000; std::cout << "Waiting for client to connect..." << std::endl; while (1) { FD_ZERO(&(this->readfds)); FD_ZERO(&(this->writefds)); FD_SET(this->srv_socket, &this->readfds); this->SetClientFd(); res = select(this->max_fd + 1, &this->readfds, &this->writefds, NULL, &this->tv); if (res == -1) { std::cout << "ERREURRRRR " << std::endl; return ; // a voir } else if (res != 0) { if (FD_ISSET(this->srv_socket, &this->readfds)) { Socket = accept(this->srv_socket, NULL, NULL); this->ClientMap[Socket] = new Client(Socket); this->Check_Max_Fd(); } for (i = 0; i < this->max_fd; i++) { if (FD_ISSET(i, &this->readfds) && i != this->srv_socket) { if (!this->ClientMap[i]->read()) { delete this->ClientMap[i]; this->ClientMap.erase(i); this->Check_Max_Fd(); } } if (FD_ISSET(i, &this->writefds) && i != this->srv_socket) { if (!this->ClientMap[i]->write()) { delete this->ClientMap[i]; this->ClientMap.erase(i); this->Check_Max_Fd(); } } } } } }