Ecoute sur socket

Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
- - Dernière réponse : Whismeril
Messages postés
13734
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2019
- 22 août 2019 à 22:12
Bonjour,


J'ai une petite question à propos des sockets comment faire pour écouter un message envoyé par un serveur en local sur une socket côté client sans faire une boucle et sans que le client n'envoit de message auparavant ?

En gros comment faire pour lire une socket seulement quand on reçoit un message sur cette socket ?



MErci pour réponse ou infos sur ce sujet !
Afficher la suite 

9 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
0
Merci
Salut,

Euh... PHP n'est pas un logiciel qui tourne en arrière plan, mais qui exécute des scripts. Donc je doute que tu puisses faire ce que tu veux avec PHP, sans faire de boucle.
D'ailleurs, juste comme ça... Pour écouter un socket, un port ou autre, il faut TOUJOURS faire une boucle, c'est ce que font les logiciels d'écoute, ils bouclent en attendant qu'il y ait quelque chose à traiter... Conclusion...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Commenter la réponse de neigedhiver
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Ok merci Neigedhiver ! Autre question est on tjr obligé d'envoyer un message au serveur pour faire un read_socket ?
Commenter la réponse de bencoandco
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
up !
Commenter la réponse de bencoandco
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Salut,

Euh... PHP n'est pas un logiciel qui tourne en arrière plan, mais qui exécute des scripts. Donc je doute que tu puisses faire ce que tu veux avec PHP, sans faire de boucle.
D'ailleurs, juste comme ça... Pour écouter un socket, un port ou autre, il faut TOUJOURS faire une boucle, c'est ce que font les logiciels d'écoute, ils bouclent en attendant qu'il y ait quelque chose à traiter... Conclusion...


Re Bonjour c'est remoi ;-)


Quelqu'un aurait il un exemple de script d'écoute de socket ?

Merci !
Commenter la réponse de bencoandco
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

La doc est là :
http://www.php.net/manual/fr/book.sockets.php

Sa lecture et sa compréhension seront 1000 fois plus performantes que ce qui pourrait t'être dit ici.
Il y a toutes les réponses à tes questions.

La balle est donc dans ton camp.
Si tu rencontres des problèmes de compréhension n'hésite pas à re poster.

Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
0
Merci
Salut,

Pour écouter un socket, un port ou autre, il faut TOUJOURS faire une boucle, c'est ce que font les logiciels d'écoute, ils bouclent en attendant qu'il y ait quelque chose à traiter... Conclusion...

Non, ça n'a aucun sens.

En gros comment faire pour lire une socket seulement quand on reçoit un message sur cette socket ?

Tu fais un appel à un socket_select() qui sera bloquant. Ainsi le fil d'exécution ton code reste en suspendu jusqu'a ce que select rende la main.
Commenter la réponse de TychoBrahe
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Oui mais je vais avoir un message du style : " erreur :l'execution du script prend trop de temps..." et un plantage nan ?

As tu des exemples d'utilisation de socket_select() ?

Merci !
Commenter la réponse de bencoandco
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
0
Merci
Oui mais je vais avoir un message du style : " erreur :l'execution du script prend trop de temps..." et un plantage nan ?

Utilisé comme CGI pour générer une page web oui, mais pas en CLI. Après je ne sais pas ce que tu fais comme projet, tu devrais donner plus de renseignements.
Commenter la réponse de TychoBrahe
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Bonjour,


Mon projet est de faire communiquer des ordinateurs entre eux dans un réseau local, je veux que chaque ordinateur puisse se mettre en mode écoute et renvoyer un message en même temps.

J'entends par mode écoute que l'ordinateur connecté n'ai pas à envoyer de message avec socket_write au serveur pour recevoir un message.

J'utilise easyphp accessible en local depuis tous les PC.


Pour ce qui est du CLI je vais regarder mais comment afficher les infos récuperées dans un script CLI ?

Merci pour vos rep ;-)
tu peux avec de l'objet faire des boucles sans utilisé de boucle while ou for... tu peux aussi imaginons dans un tableau déposé une fonction anonyme qui va tester le socket et retourné null ou une valeur ça te permet de savoir quel socket est ok pour être lu en filtrant de ton tableau les valeur null.
Whismeril
Messages postés
13734
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2019
302 -
BONJOUR si si quand on réveille une discussion endormie depuis 9 ans, saluer est opportun.

Et on va espérer pour bencoandco que depuis le temps il a trouvé une solution.
Commenter la réponse de bencoandco