# On commence par declarer deux tubes de communication.
# Le premier permet au pere d'ecrire et au fils de lire.
# Le second permet au fils d'ecrire et au pere de lire.
pipe(LIT_P,ECRIT_F);
pipe(LIT_F,ECRIT_P);
# Puis on purge des deux tubes afin de valider les echanges.
local($fh)=select ECRIT_F; $|=1;select $fh;
local($fh)=select ECRIT_P; $|=1;select $fh;
if ($pid = fork) {
# Ici on est dans le pere.
# Le pere ferme les tubes d'acces dont il n'a pas besoin
# afin que son fils puisse les utiliser.
close LIT_P;close ECRIT_P;
@ Le pere transmet une valeur a son fils.
$A = 10;
print ECRIT_F "$A\n";
# Puis il recupere ce que lui retourne son fils.
chomp($A=
|
#!/usr/bin/perl
use IO::Socket;
print ("Donnez moi un nom de machine ou une adresse IP : ");
$valeur =
|
#!/usr/bin/perl
use Net::Ping;
use IO::Socket::INET;
# Les trois premiers chiffres de la classe que l'on veut scanner.
my $classe = 'aaa.bbb.ccc';
# Preparation d'un ping() avec un delai d'attente de 0,1 seconde.
my $p = Net::Ping->new('icmp', 0.1);
# Exploration des 255 numeros de la classe C.
for my $n ( 0 .. 254 ) {
my $ip = "$classe.$n";
# Envoi du ping() pour verifier que la machine est en marche.
if ( $p->ping($ip) ) {
#La machine est en marche.
print "$ip: est en marche. ";
# Tentative de connection ssh.
my $s = IO::Socket::INET->new( PeerAddr => $ip,
PeerPort => 22,
Timeout => 0.1);
print " SSH ne repond pas.\n" unless ( $s );
(print " " . <$s> and close $s) if ( $s );
}
}
|
#!/usr/bin/perl
# Serveur.
use IO::Socket;
# Creation du socket.
$server = IO::Socket::INET->new(
LocalPort => 3141, Type => SOCK_STREAM,
Reuse => 1, Listen => 5)
or die "Creation du serveur impossible.\n";
print "Demarrage du serveur..\n";
while ($client = $server->accept()) {
print $client "Connection etablie !\n";
$pid = fork;
die "Clonage impossible !" unless defined ($pid);
if ($pid ==0) {
# Le fils recoit les donnees du client.
while ($ligne = <$client> ) {
print "client > $ligne";
}
} else {
# Le pere envoie les donnees au client.
while ($ligne = <>) {
print $client $ligne;
}
}
}
|
#!/usr/bin/perl # Client. use IO::Socket; # Lecture du nom du serveur. print "Nom du serveur."; chomp($adresse = |
#!/usr/bin/perl
# Serveur.
use IO::Socket;
# Ouverture des tubes de communication.
pipe(LIT_P,ECRIT_F);
pipe(LIT_F,ECRIT_P);
local($fh)=select ECRIT_F; $|=1;select $fh;
local($fh)=select ECRIT_P; $|=1;select $fh;
# Ouverture du socket.
$socket = IO::Socket::INET->new(
LocalPort => 3141, Type => SOCK_STREAM,
Reuse => 1, Listen => 5)
or die "Creation du serveur impossible.\n";
$socket -> autoflush(1);
print "Demarrage du serveur..\n";
# Acceptation du client.
while ($client = $socket->accept()) {
# Clonage du processus.
$pid = fork;
die "Clonage impossible !" unless defined ($pid);
if ($pid) {
# Le pere recoit les donnees du client, le nom du fichier.
$nom = <$client>;
close LIT_P;close ECRIT_P;
# Il transmet le nom a son fils.
print ECRIT_F "$nom";
close LIT_F;close ECRIT_F;
} else {
# Le fils envoie les donnees au client.
close LIT_F;close ECRIT_F;
# Lecture du nom envoyé pas son pere.
chomp($nom=
|
#!/usr/bin/perl # Client. use IO::Socket; print "Nom du serveur."; # Lecture du nom du serveur. chomp($adresse = |
#!/usr/bin/perl
# Serveur.
use IO::Socket::INET;
print ">> Programme Serveur <<\n";
# Creation d'une Socket.
$MySocket=new IO::Socket::INET->new(LocalPort=>1234,
Proto=>'udp');
$def_msg="\nReception d'un message du client.....\n";
while(1)
{
$MySocket->recv($text,128);
if($text ne '')
{
print "\nMessage recu : '", $text,"'\n";
}
# Fin si le message est vide.
else
{
print "Le client a termine son travail !\n";
exit 1;
}
}
|
#!/usr/bin/perl
# Client.
use IO::Socket::INET;
print ">> Programme Client <<";
# Creation d'une Socket.
$MySocket=new IO::Socket::INET->new(PeerPort=>1234,
Proto=>'udp',
PeerAddr=>'localhost');
$def_msg="Quel est le message que je dois transmettre ? : ";
print "\n",$def_msg;
while($msg=
|