Forum Astuces.divers [Perl] Aller plus loin avec Net::Server

Posté par  .
Étiquettes : aucune
0
28
juin
2004
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  . Évalué à 1.

    Pour le novice en Net::Server, serai t'il possible de décrire un peu de quoi on parle ?

    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  . Évalué à 1.

      Il s'agit d'un module CPAN (donc oui, du Perl) qui constitue une base tres robuste et configurable pour le développement d'un serveur en Perl.
      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.