Created
October 21, 2015 23:57
-
-
Save masterT/bb9da637cf5353673383 to your computer and use it in GitHub Desktop.
Lab 5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env perl | |
use Getopt::Long; | |
my $var1=0; | |
my $var2; | |
my $var3; | |
my $var4; | |
my $options = GetOptions ( | |
"bool" => \$var1, | |
"h=s" => \$var3, | |
"2=i" => \$var2, | |
"g=s" => \$var4 ); | |
print "var1 = $var1\n"; | |
print "var2 = $var2\n"; | |
print "var3 = $var3\n"; | |
print "var4 = $var4\n"; | |
# Explication | |
# | |
# Dans GetOptions, on met "2=i" pour signifier que le paramètre | |
# après « -2 » doit être un nombre entier et on met "h=s" pour | |
# signifier que le paramètre après « -h » doit être une chaîne de | |
# caractères (string). Lorsqu'on laisse l'option seul comme pour | |
# "bool", celui-ci ne prend pas de paramètre et lorsqu'on | |
# l'inscrit lors de l'appel du programme, il devient à 1 (valeur | |
# booléenne), sinon il ne change pas. Vous remarquerez qu'on peut | |
# mettre seulement la première lettre du paramètre « bool ». | |
# Ainsi, il est très important que tous les paramètres aient une | |
# lettre de départ différente. Il serait possible d'inscrire le | |
# nom du paramètre au complet : « Perl ex1.pl -bool -2 777 -h | |
# allo -g bonjour ». |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env perl | |
use IO::Socket; | |
# Déclaration des variables | |
my $protocole = "tcp"; | |
my $port = "3434"; | |
my $input = ""; | |
my $i = 0; | |
$serveur = IO::Socket::INET->new( | |
Proto => $protocole, | |
LocalPort => $port, | |
Listen => SOMAXCONN, | |
Reuse => 1 | |
) or die "Impossible de se connecter sur le port $port en localhost"; | |
while (my $connection = $serveur->accept()) { | |
#Affichage du nombre de connection au serveur | |
$i++; | |
print "Connection $i au serveur\n"; | |
#On envoie un mot de bienvenue à l'ordinateur distant | |
print $connection "Bienvenue mon ami\n"; | |
#On intercepte l'information envoyé par l'ordinateur | |
#distant, tant que celui-ci n'entre pas la chaine de | |
#caractère quit suivie de la toucher entrée | |
while($input ne "quit\r\n") { | |
#On attend que l'ordinateur distant nous envoie | |
#des caractères | |
$input = <$connection>; | |
#Affichage de la chaine dans la console du serveur | |
print "$input"; | |
#Le serveur envoie une chaine de caractère à | |
#l'ordinateur distant | |
print $connection "Merci pour cette chaine\n"; | |
} | |
#On réinitialise la variable input | |
$input = ""; | |
#On ferme la connection | |
close($connection); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env perl | |
use IO::Socket; | |
my $input = ""; | |
my $ligne = ""; | |
my $proto = "tcp"; | |
my $host = "localhost"; | |
my $port = 3434; | |
#Création de la connection avec un ordinateur ayant l'adresse | |
#localhost pour l'envoie de paquets TCP sur le port 3434 | |
my $connection = IO::Socket::INET->new( | |
Proto => $proto, | |
PeerAddr => $host, | |
PeerPort => $port | |
) or die "Impossible de se connecter sur le port $port à l'adresse $host"; | |
#Tant que l'utilisateur n'écris pas quit, on continue | |
while ($ligne ne "quit\n") { | |
#On attend que le serveur nous envoie une confirmation | |
$input = <$connection>; | |
#Affichage du message du serveur dans la console | |
#de l'utilisateur | |
print $input; | |
#On attend que l'utilisateur entre une chaine | |
$ligne = <STDIN>; | |
#On envoie la chaine au serveur | |
#Attention : Il faut prendre en considération l'effet telnet sur le \n | |
#Ainsi, on s'assure que notre serveur créé à l'exercice 4 | |
#fonctionne autant avec telnet qu'avec ce programme. | |
if ($ligne eq "quit\n") { | |
print $connection "quit\r\n"; | |
} else { | |
print $connection $ligne; | |
} | |
} | |
#Affichage de la dernière chaine envoyé par le serveur | |
print <$connection>; | |
#Fermeture de la connection | |
close ($connection); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment