test
continuous-integration/drone/push Build is passing Details

ServeurDeTest
nathan boileau 2 years ago
parent 3eb28ca836
commit 30cc9b29f0

@ -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 // 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"); $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 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();
// tableau des sockets à surveiller en lecture // tableau des sockets à surveiller en lecture
$read=array($socket); $read=array($socket);
// tableau des sockets à surveiller en écriture // tableau des sockets à surveiller en écriture
@ -51,28 +41,33 @@ 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 ERROR : ".socket_strerror(socket_last_error())."\n"); $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 //Si c'est une connection entrante, on la rajoute à la liste des sockets à surveiller
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
if(in_array($socket,$read)) 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)) if(in_array($client,$read))
{ {
// Lire le message provenant de la socket du client $request=socket_read($client,1024);
$request = socket_read($client,1024) or die("N'a pas pu lire de requête ERROR : ".socket_strerror(socket_last_error())."\n"); if($request!=false)
if(method_exists($requestHandler,$request))
{ {
// éxécute la méthode correspondant à la requête du client en enlevant les derniers mots $requestHandler = new RequestHandler($request);
// de la requête qui sont les paramètres de la méthode if(method_exists($requestHandler,$request))
$requestHandler->explode(' ',$request)[0]($client,$request); {
$response=$requestHandler->explode(' ',$request)[0]($client,$request);
}
else
{
$response="Invalid request";
}
} }
} }
} }
Loading…
Cancel
Save