diff --git a/WEB/server.php b/WEB/server.php index 69a2037b..da5ee9e0 100644 --- a/WEB/server.php +++ b/WEB/server.php @@ -14,7 +14,7 @@ $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,$host,$port) or die("la socket n'a pas pu être attachée au serveur à l'adresse "); +$result = socket_bind($socket,$serverAdress,$port) or die("la socket n'a pas pu être attachée au serveur à l'adresse "); // tableau de groupe de sockets avec comme paire clés valeurs // l'identifiant de la partie et l'ensemble de connections @@ -25,6 +25,18 @@ $arraySocketGroup=array(); $socketsFromQueue=array(); +// tableau des sockets à surveiller en lecture + +$read=array($socket); + +// tableau des sockets à surveiller en écriture + +$write=array(); + +//tableau des sockets à surveiller parce qu'elles ont des erreurs + +$except=array(); + // reponse du serveur au client $response=''; @@ -32,16 +44,20 @@ $response=''; // requête du client au serveur $request=''; + while(true) { // Commencer à écouter sur le port $result = socket_listen($socket) or die ("N'a pas pu configurer l'écoute sur la socket\n"); + // tant qu'il n'y a pas de connection entrante ou de requete du client bloqué le while + socket_select($read,$write,$except,null); // Accepter les connections entrantes s'il y en a à cet instant t ou bloque le while tant qu'il n'y en a pas $client = socket_accept($socket) or die("N'a pas pu accepter les connections entrantes\n"); // Ajoute la connection à un tableau de connection des joueurs en attente - $socketsFromQueue[]=$spawn; + + $socketsFromQueue[]=$client; // si le nombre de joueur par partie nécessaire est égal au nombre de connection encore dans la file d'attente // alors envoie à l'utilisateur de lancer la partie et ajoute l'ensemble de connection à un tableau de groupe de sockets avec comme paire clés valeurs @@ -52,22 +68,20 @@ while(true) { if(count($socketsFromQueue)==$playerNumberPerGame) { $response="launchGame"; - foreach($socketsFromQueue as $sock) - { - socket_write($sock,$response,strlen($response)) or die("N'a pas pu écrire à la socket\n"); - } $idPartie=$partie_gateway->findPartieInQueue(); $arraySocketGroup[$idPartie]= $socketsFromQueue; $socketsFromQueue=array(); } else{ $response="refreshQueue"; - foreach($socketsFromQueue as $sock) + } + foreach($socketsFromQueue as $sock) { socket_write($sock,$response,strlen($response)) or die("N'a pas pu écrire à la socket\n"); } - } } - //Lire le message provenant de la socket du client + + // Lire le message provenant de la socket du client + $input = socket_read($spawn,1024) or die("N'a pas pu lire de requête"); }