je souhaite écrire une application client / serveur sous windows.
Pour cela j'ai avant tout testé avec un script classique pour le client et
le serveur (cf fin de message).
Cela marche très bien sous linux mais ne fait rien sous windows ... je pense
que cela vient des forks ... Ma question est donc : comment faire un script
client / serveur sous windows via les sockets si fork ne marche pas sous
windows ...
Merci
Arnaud
#Le serveur
use IO::Socket;
$server = IO::Socket::INET->new(
LocalPort => 1234,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 5,
LocalHost => '127.0.0.1'
) or die "Création du serveur impossible.\n";
print "Démarrage du serveur ..\n";
while ($client = $server->accept()) {
print $client "Le serveur dit 'bonjour' au client !\n";
$pid = fork;
die "Je ne peux pas forker !" if ! defined ($pid);
if ($pid ==0) {
# c'est le processus enfant, chargé de l'écoute des clients
#############################################################
while ($ligne = <$client> ) {
print "client> $ligne";
}
} else {
# c'est le père qui pendant ce temps répond au client #
#######################################################
while ($ligne = <>) {
print $client $ligne;
}
}
}
# Le client
#!/usr/bin/perl -w
# client.pl #
##############
use IO::Socket;
print "nom ou adresse IP du serveur (localhost par défaut) ";
$adresse = <>; chomp($adresse);
$adresse= "localhost" if $adresse eq "";
$socket = IO::Socket::INET->new(
PeerAddr => $adresse,
Proto => "tcp",
PeerPort => 1234
)
or die "Connexion au serveur impossible.\n";
$pid = fork;
die "Je ne peux pas forker !" if ! defined ($pid);
if ($pid ==0) {
# c'est le processus enfant, chargé de l'émission au serveur
#############################################################
while ($ligne = <> ) {
print $socket $ligne;
}
} else {
# c'est le père qui pendant ce temps écoute le serveur
#######################################################
while ($ligne = <$socket>) {
print "serveur> $ligne";
}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
dominix
Arnaud wrote:
Bonjour,
je souhaite écrire une application client / serveur sous windows. Pour cela j'ai avant tout testé avec un script classique pour le client et le serveur (cf fin de message).
$server = IO::Socket::INET->new( LocalPort => 1234, Type => SOCK_STREAM, Reuse => 1, Listen => 5, LocalHost => '127.0.0.1' ) or die "Création du serveur impossible.n"; print "Démarrage du serveur ..n";
il y a t'il un message d'erreur ?
$pid = fork; die "Je ne peux pas forker !" if ! defined ($pid);
si le message d'erreur c'est "Je ne peux pas forker !" ou bien "Création du serveur impossible.n"
remplace donc ces messages par "Je ne peux pas forker $!" et "Création du serveur impossible $!n" car $! contient le message d'erreur et là on en saura plus.
-- dominix
Arnaud wrote:
Bonjour,
je souhaite écrire une application client / serveur sous windows.
Pour cela j'ai avant tout testé avec un script classique pour le
client et le serveur (cf fin de message).
$server = IO::Socket::INET->new(
LocalPort => 1234,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 5,
LocalHost => '127.0.0.1'
) or die "Création du serveur impossible.n";
print "Démarrage du serveur ..n";
il y a t'il un message d'erreur ?
$pid = fork;
die "Je ne peux pas forker !" if ! defined ($pid);
si le message d'erreur c'est
"Je ne peux pas forker !"
ou bien "Création du serveur impossible.n"
remplace donc ces messages par
"Je ne peux pas forker $!"
et "Création du serveur impossible $!n"
car $! contient le message d'erreur et là on en saura plus.
je souhaite écrire une application client / serveur sous windows. Pour cela j'ai avant tout testé avec un script classique pour le client et le serveur (cf fin de message).
$server = IO::Socket::INET->new( LocalPort => 1234, Type => SOCK_STREAM, Reuse => 1, Listen => 5, LocalHost => '127.0.0.1' ) or die "Création du serveur impossible.n"; print "Démarrage du serveur ..n";
il y a t'il un message d'erreur ?
$pid = fork; die "Je ne peux pas forker !" if ! defined ($pid);
si le message d'erreur c'est "Je ne peux pas forker !" ou bien "Création du serveur impossible.n"
remplace donc ces messages par "Je ne peux pas forker $!" et "Création du serveur impossible $!n" car $! contient le message d'erreur et là on en saura plus.