diff --git a/WEB/server.php b/WEB/server.php index 8c12c4c0..806cecf4 100644 --- a/WEB/server.php +++ b/WEB/server.php @@ -15,19 +15,9 @@ $socket = socket_create(AF_INET, SOCK_STREAM,0) or die("la socket n'a pas pu êt // Attacher la socket à unde adresse ip et un port -$result = socket_bind($socket,$serverAdress,$port) or die("la socket n'a pas pu être attachée au serveur à l'adresse ".$serverAdress." et au port ".$port."ERROR : ".socket_strerror(socket_last_error())."\n"); - -// tableau de groupe de sockets avec comme paire clés valeurs -// l'identifiant de la partie et l'ensemble de connections - -$arraySocketGroup=array(); - -// tableau des connections en attente de pouvoir créer une partie - -$socketsFromQueue=array(); +$result = socket_bind($socket, $serverAdress, $port) or die("la socket n'a pas pu être attachée à l'adresse ip et au port ERROR : ".socket_strerror(socket_last_error())."\n"); // tableau des sockets à surveiller en lecture - $read=array($socket); // tableau des sockets à surveiller en écriture @@ -51,28 +41,33 @@ while(true) { // Commencer à écouter sur le port $result = socket_listen($socket) or die ("N'a pas pu configurer l'écoute sur la socket ERROR : ".socket_strerror(socket_last_error())."\n"); - // tant qu'il n'y a pas de connection entrante ou de requete du client bloque le while - - socket_select($read,$write,$except,null); - - // si il y a une connection entrante, l'accepter, cette méthode est non bloquante - // puisqu'ici $read a été modifié par socket_select et donc la méthode sera forcément - // exécutée sans bloquer le while - + //Si c'est une connection entrante, on la rajoute à la liste des sockets à surveiller if(in_array($socket,$read)) { - $client = socket_accept($socket) or die("N'a pas pu accepter les connections entrantes ERROR : ".socket_strerror(socket_last_error())."\n"); + // Accepter la connection entrante + $client = socket_accept($socket) or die("N'a pas pu accepter la connection entrante ERROR : ".socket_strerror(socket_last_error())."\n"); + // Ajouter la socket du client à la liste des sockets à surveiller + $read[]=$client; } + //si $client est dans le tableau des sockets à surveiller en lecture + //Met la requête du client dans $request et verifie si la requête est valide + //Si la requête est valide, éxécute la méthode du requestHandler correspondante + //Sinon, envoie un message d'erreur au client if(in_array($client,$read)) { - // Lire le message provenant de la socket du client - $request = socket_read($client,1024) or die("N'a pas pu lire de requête ERROR : ".socket_strerror(socket_last_error())."\n"); - if(method_exists($requestHandler,$request)) + $request=socket_read($client,1024); + if($request!=false) { - // éxécute la méthode correspondant à la requête du client en enlevant les derniers mots - // de la requête qui sont les paramètres de la méthode - $requestHandler->explode(' ',$request)[0]($client,$request); + $requestHandler = new RequestHandler($request); + if(method_exists($requestHandler,$request)) + { + $response=$requestHandler->explode(' ',$request)[0]($client,$request); + } + else + { + $response="Invalid request"; + } } } } \ No newline at end of file