Faire un select sur plusieurs sockets

Le
Scetbon Cyril
Bonjour,

qq'un aurait il un exemple de bout de code permettant de faire un select
sur plusieurs sockets en même temps (donc pas de select successifs) et
de savoir ensuite quel est le socket sur lequel des octets sont
disponibles en lecture ?

Merci
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Laurent Wacrenier
Le #426985
Scetbon Cyril
qq'un aurait il un exemple de bout de code permettant de faire un select
sur plusieurs sockets en même temps (donc pas de select successifs) et
de savoir ensuite quel est le socket sur lequel des octets sont
disponibles en lecture ?


perldoc -f select

Scetbon Cyril
Le #427293
Laurent Wacrenier wrote:
Scetbon Cyril
qq'un aurait il un exemple de bout de code permettant de faire un select
sur plusieurs sockets en même temps (donc pas de select successifs) et
de savoir ensuite quel est le socket sur lequel des octets sont
disponibles en lecture ?



perldoc -f select
/dev/null
c'est la 1ere chose que j'ai faite.





Scetbon Cyril
Le #427186
Scetbon Cyril
qq'un aurait il un exemple de bout de code permettant de faire un
select sur plusieurs sockets en même temps (donc pas de select
successifs) et de savoir ensuite quel est le socket sur lequel des
octets sont disponibles en lecture ?
trouvé:




vec($rin,fileno($_),1)=1 for (@sockets);
($numready)=select($rout=$rin,undef,undef,undef);

puis retester tous les vecteurs derrière avec $rout en variable pour
déterminer sur quelle socket il y a des données:
for(@sockets)
{
if(vec($rout,fileno($_),1)
{
print "trouvé!n";
last; # une personne à la fois.
}
}



Laurent Wacrenier
Le #427185
Scetbon Cyril
trouvé:

vec($rin,fileno($_),1)=1 for (@sockets);
($numready)=select($rout=$rin,undef,undef,undef);

puis retester tous les vecteurs derrière avec $rout en variable pour
déterminer sur quelle socket il y a des données:


Voilà, maintenant, c'est plus simple avec le module IO::Select.

Patrick
Le #427184
Voilà, maintenant, c'est plus simple avec le module IO::Select.


Voire IO::Multiplex un cran plus haut, voire même poe direct :-)

Patrick.

Publicité
Poster une réponse
Anonyme