Ventury Networks’ Blog

“If it walks like a duck and quacks like a duck, I would call it a duck.”

Un serveur express en perl


Il arrive des fois où l’on a besoin de tester une application, et que pour cela un serveur logiciel est necessaire. Le cas s’est présenté récement : j’avais besoin d’un serveur qui écoutait sur un port, et affichait sur la sortie standard les paquets qu’on lui envoyait.

L’application client que je voulais tester était en Java. J’aurrais pu faire un serveur approprié en Java, mais … c’est tellement long. J’ai préféré utiliser un petit serveur bidon écrit en perl, qui réalise pleinement ce que j’attends, dont je vous donne ici le code source :

#!/usr/bin/perl
use strict;use warnings;
use IO::Socket;

my $serveur = IO::Socket::INET->new(LocalPort => 12345,
                                    Type      => SOCK_STREAM,
                                    Reuse     => 1,
                                    Listen    => 10)
or die "Impossible serveur tcp sur le port 12345 : $@\n";

while(my $client = $serveur->accept())
{
	while( my $rep = <$client>) {
	    print $rep;
	}
}

Il s’agit d’une version simplifiée d’un exemple trouvé sur internet il y a de cela quelques temps. Dans la doc Perl probablement ? Quoi qu’il en soit, la modif apporté fait que le serveur ne fork pas lors de l’arrivée d’un nouveau client : il s’agit là d’un serveur monoclient. Mais franchement, c’était largement suffisant !
Je vais sans doute utiliser ce serveur pour tester BOSS sur une connection TCP.

Tags :