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.