next up previous contents
suivant: Comparer des IPs à monter: Perl et le réseau précédent: Encoder une URL   Table des matières

Réaliser un serveur TCP pre-forké

Il existe différentes façons de faire un serveur TCP, on peut créer un processus fils à chaque nouvelle connexion, utiliser les threads ou même lancer à l'avance plusieurs processus capable de répondre rapidement à la demande.

C'est dans ce dernier modèle, que l'on nomme serveur pré-forké, que le module NetServer::Generic est le meilleur.

use NetServer::Generic;

sub proto {
        my $connect = shift;
        print STDOUT "Bonjour, type 'quit' to exit\n\n";
        while(my $tmp = <STDIN>) {
                chomp($tmp);
                if($tmp =~ /^quit/i) {
                        return;
                }
                print STDOUT "You said $tmp\n";
        }
}

my $server = new NetServer::Generic;

$server -> port(9100);
$server -> callback(\&proto);
$server -> mode("prefork");
$server -> min_spare_servers(2);
$server -> max_servers(3);
print "Starting TCP server\n";
$server -> run();

À noter que le module NetServer::Generic n'est pas le seul à implémenter ce genre de solution, on trouve également le module Net::Server qui propose même un mode de fonctionnement sous inetd le super daemon d'Unix.



2006-03-15