global $port,$serverAdress,$rep,$vues, $BUFFER_SIZE;
$userModel = new UserModel();
sleep(5);
// pas d'arrêt d'éxécution du script (No timeout)
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("la socket n'a pas pu être créée ERROR : ".socket_strerror(socket_last_error())."\n");
// connecter la socket à l'adresse ip et au port du serveur
$result = socket_set_block($socket);
if($result === false) {
echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "socket_set_block a réussi.\n";
}
$result = socket_connect($socket, $serverAdress, $port) or die("Impossible de se connecter au serveur ERROR : ".socket_strerror(socket_last_error())."\n");
if ($result === false) {
// La connexion de la socket à l'adresse et au port a échoué
echo "socket_connect a échoué : " . socket_strerror(socket_last_error()) . "\n";
global $port,$serverAdress,$rep,$vues, $BUFFER_SIZE;
global $port,$serverAdress,$rep,$vues, $BUFFER_SIZE;
$userModel = new UserModel();
$userModel = new UserModel();
sleep(5);
// pas d'arrêt d'éxécution du script (No timeout)
// pas d'arrêt d'éxécution du script (No timeout)
set_time_limit(0);
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("la socket n'a pas pu être créée ERROR : ".socket_strerror(socket_last_error())."\n");
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("la socket n'a pas pu être créée ERROR : ".socket_strerror(socket_last_error())."\n");
// connecter la socket à l'adresse ip et au port du serveur
// connecter la socket à l'adresse ip et au port du serveur
$result = socket_set_block($socket);
if($result === false) {
echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "socket_set_block a réussi.\n";
}
$result = socket_connect($socket, $serverAdress, $port) or die("Impossible de se connecter au serveur ERROR : ".socket_strerror(socket_last_error())."\n");
$result = socket_connect($socket, $serverAdress, $port) or die("Impossible de se connecter au serveur ERROR : ".socket_strerror(socket_last_error())."\n");
if ($result === false) {
// La connexion de la socket à l'adresse et au port a échoué
echo "socket_connect a échoué : " . socket_strerror(socket_last_error()) . "\n";
public function Queuing(Socket $socket,string $request){
public function Queuing($socket,string $request){
global $playerNumberPerGame;
global $playerNumberPerGame;
// Ajoute la connection à un tableau de connection des joueurs en attente
// Ajoute la connection à un tableau de connection des joueurs en attente
$socketsFromQueue[]=$socket;
$socketsFromQueue[]=$socket;
echo 'ajout de la connecion au tableau des connections en attente'.count($socketsFromQueue).'\n';
// 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
// l'identifiant de la partie et l'ensemble de connections sinon envoie à tout les utilisateurs en file d'attente qu'il faut rafraichir la page de la file d'attente
// l'identifiant de la partie et l'ensemble de connections sinon envoie à tout les utilisateurs en file d'attente qu'il faut rafraichir la page de la file d'attente
echo 'nombre de joueurs en attente : '.count($socketsFromQueue).' nombre de joueurs par partie : '.$playerNumberPerGame.'\n';
$socket = socket_create(AF_INET, SOCK_STREAM,0) or die("la socket n'a pas pu être crée ERROR : ".socket_strerror(socket_last_error())."\n");
$socket = socket_create(AF_INET, SOCK_STREAM,0) or die("la socket n'a pas pu être crée ERROR : ".socket_strerror(socket_last_error())."\n");
if($socket===false)
{
echo "socket_create a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "socket_create a réussi.\n";
}
// 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 à l'adresse ip et au 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 :".$serverAdress." et au port".$port." ERROR : ".socket_strerror(socket_last_error())."\n");
if ($result === false) {
// L'attachement de la socket à l'adresse et au port a échoué
echo "socket_bind a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "socket_bind a réussi.\n";
// L'attachement de la socket à l'adresse et au port a réussi
}
socket_set_block($socket) or die("N'a pas pu mettre la socket en mode bloquant ERROR : ".socket_strerror(socket_last_error())."\n");
$result=socket_set_block($socket) or die("N'a pas pu mettre la socket en mode bloquant ERROR : ".socket_strerror(socket_last_error())."\n");
if ($result === false) {
// La mise en mode bloquant de la socket a échoué
echo "socket_set_block a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "socket_set_block a réussi.\n";
// La mise en mode bloquant de la socket a réussi
}
// tableau des sockets à surveiller en lecture
// tableau des sockets à surveiller en lecture
$read=array($socket);
$read=array($socket);
@ -41,50 +62,61 @@ $response='';
$request='';
$request='';
$client=false;
while(true) {
while(true) {
// Commencer à écouter sur le port
// Commencer à écouter sur le port
$result = socket_listen($socket, 10) or die ("N'a pas pu configurer l'écoute sur la socket ERROR : ".socket_strerror(socket_last_error())."\n");
$result = socket_listen($socket, 10) or die ("N'a pas pu configurer l'écoute sur la socket ERROR : ".socket_strerror(socket_last_error())."\n");
if ($result === false) {
// L'écoute sur le port a échoué
echo "socket_listen a échoué : " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "socket listen sur le port :".$port."\n";
// L'écoute sur le port a réussi
}
//Si c'est une connection entrante, on la rajoute à la liste des sockets à surveiller
//Si c'est une connection entrante, on la rajoute à la liste des sockets à surveiller
if(in_array($socket,$read))
if(in_array($socket,$read))
{
{
// Accepter la connection entrante
// Accepter la connection entrante
if($client = socket_accept($socket) == false)
$client=socket_accept($socket);
if($client === false)
{
{
echo "N'a pas pu accepter la connection entrante ERROR : ".socket_strerror(socket_last_error())."\n";
echo "N'a pas pu accepter la connection entrante ERROR : ".socket_strerror(socket_last_error())."\n";
return;
}
}
// Ajouter la socket du client à la liste des sockets à surveiller
else
{
$read[]=$client;
$read[]=$client;
}
}
// Ajouter la socket du client à la liste des sockets à surveiller