Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faire un select sur plusieurs sockets

5 réponses
Avatar
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

5 réponses

Avatar
Laurent Wacrenier
Scetbon Cyril écrit:
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

Avatar
Scetbon Cyril
Laurent Wacrenier wrote:
Scetbon Cyril écrit:

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.





Avatar
Scetbon Cyril
Scetbon Cyril écrit:

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.
}
}



Avatar
Laurent Wacrenier
Scetbon Cyril écrit:
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.

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


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

Patrick.