Le script suivant permet de réaliser un simple serveur TCP en Perl.
Vous pourrez accéder ensuite à ce serveur grâce à une connexion telnet.
shell>telnet 127.0.0.1 3000
Le serveur ne fait qu’afficher des informations à l’utilisateur, et retourne ce que l’utilisateur tape.
Pour terminer la connexion, l’utilisateur utilisera le mot clé : quit.
#!/usr/bin/perl -w use strict; use IO::Socket::INET; my $server = IO::Socket::INET->new ( LocalPort => 3000, Type => SOCK_STREAM, Reuse => 1, Listen => 5) or die "Probleme serveur"; my $client; my $chaine; my $pid; $SIG{CHLD} = 'IGNORE'; while ( $client = $server->accept ()) { $pid = fork; unless ($pid) { while ( 1 ) { print $client "Vous voulez dire ? "; $chaine = <$client>; exit unless defined $chaine; chomp ($chaine); if ( $chaine =~ "quit" ) { $client->shutdown ( 2 ); exit; } else { print $client "Vous avez dit : $chaine\n"; } } } }
Explication
$SIG{CHLD} = 'IGNORE';
Le script réalise un fork pour chaque nouvel utilisateur. Lorsque l’utilisateur termine la connexion le processus fils va se terminer grâce à la commande « exit ».
Sans $SIG{CHLD} = ‘IGNORE’ le processus fils serait transformé en processus Zombie jusqu’à ce que le processus parent soit terminé. Si vous réalisez un Daemon cela risque de saturer votre table de processus.
$server->accept ()
Met en stand-by le processus jusqu’à la connexion d’un nouvel utilisateur.
Cette fonction retourne un objet de type IO::Socket.
$chaine = <$client>;
Le processus en charge du client attend que celui-ci saisisse une valeur au clavier.
$client->shutdown ( 2 );
On termine la connexion avec l’utilisateur proprement.
Le numéro 2 indique au client que l’on a fini d’utiliser le socket.
Pour plus d’information sur cette méthode, voici la Perldoc.

Commentaires récents