Bonjour,
Je suis un train de créer un petit programme de communication (serveur/client) avec sockets en php et j'ai un petit problème.
Mon client envoie des données au serveur et si celui ci les a bien reçu, il renvoie au client un accusé (ack=1). toutefois, j'aimerais que si le message n'est pas recu au bout d'un certain temps $timeout, le client renvoie le message de données.
Je vous mets ici mes codes:
pour le serveur:
$info = stream_get_meta_data($socket_reception);
$socket_envoi = creation_stream_socket_envoi($addrc, $port);
if ($info=TRUE) {
//envoi de l'ack=1
$ack=1;
envoi_donnees($socket_envoi, $ack);}
else {
//envoi de l'ack=0
$ack=0;
envoi_donnees($socket_envoi, $ack);
pour le client:
// reception de l'ack
$socket_reception = creation_stream_socket_reception($addrc, $port);
reception_acknowledge($socket_reception);
stream_set_timeout ( $socket_reception , $timeout );
$info = stream_get_meta_data($socket_reception);
if ($info['timed_out']= false) {
$donnees='Bonjour je vous envoie un message';
envoi_donnees($socket_envoi, $donnees);}
C'est au niveau du dernier paragraphe que j'ai un soucis.
Par ailleurs, si l'acknowledge retourné vaut 1 j'aimerais que le client renvoie un accusé. Voici le code:
info = stream_set_read_buffer ($socket_reception,1);
//envoi confirmation ack
if ($info='1') {
$donnees='Ack bien reçu';
envoi_donnees($socket_envoi, $donnees);}
Apparemment la condition sur ce code ne fonctionne pas, pourriez-vous m'indiquer quelle fonction utiliser pour 'lire' le contenu de la socket ?
Je vous remercie par avance pour votre aide