modification server.php

ServeurDeTest
Johan LACHENAL 2 years ago
parent 2f18624f61
commit 6d1fe0baad

@ -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 // 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 // tableau de groupe de sockets avec comme paire clés valeurs
// l'identifiant de la partie et l'ensemble de connections // l'identifiant de la partie et l'ensemble de connections
@ -25,6 +25,18 @@ $arraySocketGroup=array();
$socketsFromQueue=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 // reponse du serveur au client
$response=''; $response='';
@ -32,16 +44,20 @@ $response='';
// requête du client au serveur // requête du client au serveur
$request=''; $request='';
while(true) { while(true) {
// Commencer à écouter sur le port // Commencer à écouter sur le port
$result = socket_listen($socket) or die ("N'a pas pu configurer l'écoute sur la socket\n"); $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 // 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"); $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 // 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 // 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 // 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) if(count($socketsFromQueue)==$playerNumberPerGame)
{ {
$response="launchGame"; $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(); $idPartie=$partie_gateway->findPartieInQueue();
$arraySocketGroup[$idPartie]= $socketsFromQueue; $arraySocketGroup[$idPartie]= $socketsFromQueue;
$socketsFromQueue=array(); $socketsFromQueue=array();
} }
else{ else{
$response="refreshQueue"; $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"); 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"); $input = socket_read($spawn,1024) or die("N'a pas pu lire de requête");
} }

Loading…
Cancel
Save