1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| <?php
class ComServeur{
// variables initialisées lors de l'appel à init
var $adresse;
var $port;
var $timeLimit;
var $socket;
//variables utiles pour récupérer les messages
var $messageLength;
var $messageRetour;
/*
Permet d'initialiser les variables de la classe.
Crée notament la socket et la connecte.
Aprés cet appel, on peut écrire et lire dans la socket $this->socket.
*/
function Init($Adresse,$Port,$TimeLimit)
{
$this->adresse=$Adresse;
$this->port=$Port;
$this->timeLimit=$TimeLimit;
error_reporting(E_ALL);
set_time_limit($this->timeLimit);
ob_implicit_flush();
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($this->socket, $this->adresse, $this->port);
}
/*
Envoie un message, reçoit le message réponse et affiche la réponse.
Appelle SEndMessage, GetMessage et PrintMsg.
*/
function ReadWritePrint($msg)
{
$this->SendMessage($msg);
$this->GetMessage();
$this->PrintMsg();
}
/*
Envoie le message $msg via la socket $this->socket.
*/
function SendMessage($msg)
{
socket_write($this->socket, $msg, strlen($msg));
}
/*
Réceptionne un message
*/
function GetMessage()
{
// Le serveur c++ envoie toujours la taille du message codé sur 4 octets avant d'envoyer le message
$msgLength = socket_read($this->socket,4);
$msgLength = unpack('V', $msgLength);
//aprés l'appel à unpack('V',$msgLength), le int qui nous intéresse se trouve dans $msgLength[1].
$this->messageLength=$msgLength[1];
$this->messageRetour=socket_read($this->socket,$this->messageLength);
}
/*
Affiche le message de la variable messageRetour
*/
function PrintMsg()
{
echo $this->messageRetour;
}
}
?> |
Partager