L'un des gros soucis avec la méthode multiplex de Net::Server, est que le multiplexage (le select quoi) est géré par la classe, et que l'on a pas beaucoup le contrôle de la boucle principale.
Comment alors gérer ses propres connexions sans forker comme un mal propre ?
C'est simple, comme l'on peut s'en douter, Net::Server::Multiplex est basé sur IO::Multiplex, il suffit alors de récupérer l'objet IO::Multiplex :
$mux = $server->{net_server}->{server}->{mux};
et d'y ajouter votre connexion :
my $sock = new IO::Socket::INET(
Proto => 'tcp',
PeerAddr => 'host.com',
PeerPort => 42,
);
$mux->add($sock);
Le callback mux_input (voir la doc de Net::Server:Multiplex) sera alors appelé par votre connexion, de la même manière qu'un client:
mux_input ($mux,$fh,\$data)
ou $fh sera $sock !
# C'est à quel sujet ?
Posté par Francois SIMOND . Évalué à 1.
J'imagine à la syntaxe, que c'est du perl... mais c'est d'une clareté presque... cryptique :D
[^] # Re: C'est à quel sujet ?
Posté par Julien CROUZET . Évalué à 1.
Le module gère toute le partie réseau du serveur et la gestion des socket (multiplexage / fork / etc) de manière transparente pour son utilisateur, qui n'a plus qu'a implementer le fonctionnement interne du serveur.
Plus d'info => http://search.cpan.org/~bbb/Net-Server-0.87/lib/Net/Server.pm(...)
(désolé si ça n'était pas toujours pas très clair :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.