Bonjour !
Une petite question bete mais qui me turlupine ...
Je veux envoyer un message via un socket et j'aimerai attendre un
acquittement pendant un certain temps seulement. Ouvrir le socket je
vois a peu pres et yecrire aussi mais pour attendre la reponse un
certain temps ? ? ?
sub sendMessage{
my ($ip_address, $message)=@_;
my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address,
PeerPort => 2048,
Proto => "tcp",
Type => SOCK_STREAM)
or die "Couldn't connect to $ip_address:2048: $@\n";
print $socketResponse $message;
############### C ici qu'il manque un truc ??!!!! ################
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
no
On Wed, 14 Apr 2004 13:51:57 +0200, lasconic wrote:
Bonjour ! Une petite question bete mais qui me turlupine ... Je veux envoyer un message via un socket et j'aimerai attendre un acquittement pendant un certain temps seulement. Ouvrir le socket je vois a peu pres et yecrire aussi mais pour attendre la reponse un certain temps ? ? ?
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; print $socketResponse $message; ############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse; } }
Je ne sais pas si c'est bien propre mais j'ai eu fait ça :
--8<-- # juste au dessus on forke, et on est donc dans le fils # qui va traiter la demande du client, pendant que le père # poursuit son écoute pour de nouvelles requetes
local $SIG{ALRM} = sub { print STDERR "Delai d'attente expiré, on ferme !n"; close $socketResponse; exit; }
# on donne 5 minutes au client pour répondre... alarm 5*60;
$response = <$socketResponse>;
# des qu'on a la réponse on peut désactiver le timeout. alarm 0; -->8--
On Wed, 14 Apr 2004 13:51:57 +0200, lasconic wrote:
Bonjour !
Une petite question bete mais qui me turlupine ... Je veux envoyer un
message via un socket et j'aimerai attendre un acquittement pendant un
certain temps seulement. Ouvrir le socket je vois a peu pres et yecrire
aussi mais pour attendre la reponse un certain temps ? ? ?
sub sendMessage{
my ($ip_address, $message)=@_;
my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address,
PeerPort => 2048,
Proto => "tcp",
Type => SOCK_STREAM)
or die "Couldn't connect to $ip_address:2048: $@n";
print $socketResponse $message;
############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse;
}
}
Je ne sais pas si c'est bien propre mais j'ai eu fait ça :
--8<--
# juste au dessus on forke, et on est donc dans le fils
# qui va traiter la demande du client, pendant que le père
# poursuit son écoute pour de nouvelles requetes
local $SIG{ALRM} = sub {
print STDERR "Delai d'attente expiré, on ferme !n";
close $socketResponse;
exit;
}
# on donne 5 minutes au client pour répondre...
alarm 5*60;
$response = <$socketResponse>;
# des qu'on a la réponse on peut désactiver le timeout.
alarm 0;
-->8--
On Wed, 14 Apr 2004 13:51:57 +0200, lasconic wrote:
Bonjour ! Une petite question bete mais qui me turlupine ... Je veux envoyer un message via un socket et j'aimerai attendre un acquittement pendant un certain temps seulement. Ouvrir le socket je vois a peu pres et yecrire aussi mais pour attendre la reponse un certain temps ? ? ?
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; print $socketResponse $message; ############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse; } }
Je ne sais pas si c'est bien propre mais j'ai eu fait ça :
--8<-- # juste au dessus on forke, et on est donc dans le fils # qui va traiter la demande du client, pendant que le père # poursuit son écoute pour de nouvelles requetes
local $SIG{ALRM} = sub { print STDERR "Delai d'attente expiré, on ferme !n"; close $socketResponse; exit; }
# on donne 5 minutes au client pour répondre... alarm 5*60;
$response = <$socketResponse>;
# des qu'on a la réponse on peut désactiver le timeout. alarm 0; -->8--
no
On Wed, 14 Apr 2004 21:24:44 +0200, no wrote:
Je ne sais pas si c'est bien propre mais j'ai eu fait ça : [snip]
C'est surtout parti de travers :/
# juste au dessus on forke, et on est donc dans le fils # qui va traiter la demande du client, pendant que le père # poursuit son écoute pour de nouvelles requetes
local $SIG{ALRM} = sub { print STDERR "Delai d'attente expiré, on ferme !n"; close $socketResponse; exit; }
# on donne 5 minutes au client pour répondre... alarm 5*60;
$response = <$socketResponse>;
# des qu'on a la réponse on peut désactiver le timeout. alarm 0;
On Wed, 14 Apr 2004 21:24:44 +0200, no wrote:
Je ne sais pas si c'est bien propre mais j'ai eu fait ça :
[snip]
C'est surtout parti de travers :/
# juste au dessus on forke, et on est donc dans le fils
# qui va traiter la demande du client, pendant que le père
# poursuit son écoute pour de nouvelles requetes
local $SIG{ALRM} = sub {
print STDERR "Delai d'attente expiré, on ferme !n";
close $socketResponse;
exit;
}
# on donne 5 minutes au client pour répondre...
alarm 5*60;
$response = <$socketResponse>;
# des qu'on a la réponse on peut désactiver le timeout.
alarm 0;
Je ne sais pas si c'est bien propre mais j'ai eu fait ça : [snip]
C'est surtout parti de travers :/
# juste au dessus on forke, et on est donc dans le fils # qui va traiter la demande du client, pendant que le père # poursuit son écoute pour de nouvelles requetes
local $SIG{ALRM} = sub { print STDERR "Delai d'attente expiré, on ferme !n"; close $socketResponse; exit; }
# on donne 5 minutes au client pour répondre... alarm 5*60;
$response = <$socketResponse>;
# des qu'on a la réponse on peut désactiver le timeout. alarm 0;
no
On Wed, 14 Apr 2004 21:27:36 +0200, no wrote:
On Wed, 14 Apr 2004 21:24:44 +0200, no wrote:
Je ne sais pas si c'est bien propre mais j'ai eu fait ça : [snip]
C'est surtout parti de travers :/
Bon, là j'abandonne :) Je vous laisse remettre les retour chariot ou il faut... /o
On Wed, 14 Apr 2004 21:27:36 +0200, no wrote:
On Wed, 14 Apr 2004 21:24:44 +0200, no wrote:
Je ne sais pas si c'est bien propre mais j'ai eu fait ça : [snip]
C'est surtout parti de travers :/
Bon, là j'abandonne :) Je vous laisse remettre les retour chariot ou il
faut... /o
Je ne sais pas si c'est bien propre mais j'ai eu fait ça : [snip]
C'est surtout parti de travers :/
Bon, là j'abandonne :) Je vous laisse remettre les retour chariot ou il faut... /o
Sébastien Cottalorda
lasconic wrote:
Bonjour ! Une petite question bete mais qui me turlupine ... Je veux envoyer un message via un socket et j'aimerai attendre un acquittement pendant un certain temps seulement. Ouvrir le socket je vois a peu pres et yecrire aussi mais pour attendre la reponse un certain temps ? ? ?
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; print $socketResponse $message; ############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse; }
Salut, tu peux utiliser IO::Select. L'avantage c'est qu'il est portable aussi bien sous Linux que sous Windows.
#---------------------------------------------------------------------------- use IO::Select; my $s=IO::Select->new(); my $timeout;
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; $s->add($socketResponse); # laisse IO::Select gérer ton handle if ($s->can_write($timeout)){ # Gestion du Time out if ($connected($socketResponse)){ # Si ta socket est bonne ... print $socketResponse $message; # alors envoyer le message print "Message Envoyé.n"; } else{ # Sinon, au Revoir print "Socket Déconnectée - Byen"; } } else { print "Timeout...n"; } $s->remove($socketResponse); # retire la gestion du handle à IO::Select close $socketResponse; # ferme la socket } #----------------------------------------------------------------------------
Hope this helps :-)
Sébastien
-- [ retirer NOSPAM pour répondre directement remove NOSPAM to reply directly ]
lasconic wrote:
Bonjour !
Une petite question bete mais qui me turlupine ...
Je veux envoyer un message via un socket et j'aimerai attendre un
acquittement pendant un certain temps seulement. Ouvrir le socket je
vois a peu pres et yecrire aussi mais pour attendre la reponse un
certain temps ? ? ?
sub sendMessage{
my ($ip_address, $message)=@_;
my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address,
PeerPort => 2048,
Proto => "tcp",
Type => SOCK_STREAM)
or die "Couldn't connect to $ip_address:2048: $@n";
print $socketResponse $message;
############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse;
}
Salut,
tu peux utiliser IO::Select.
L'avantage c'est qu'il est portable aussi bien sous Linux que sous Windows.
#----------------------------------------------------------------------------
use IO::Select;
my $s=IO::Select->new();
my $timeout;
sub sendMessage{
my ($ip_address, $message)=@_;
my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address,
PeerPort => 2048,
Proto => "tcp",
Type => SOCK_STREAM)
or die "Couldn't connect to $ip_address:2048: $@n";
$s->add($socketResponse); # laisse IO::Select gérer ton handle
if ($s->can_write($timeout)){ # Gestion du Time out
if ($connected($socketResponse)){ # Si ta socket est bonne ...
print $socketResponse $message; # alors envoyer le message
print "Message Envoyé.n";
}
else{ # Sinon, au Revoir
print "Socket Déconnectée - Byen";
}
}
else {
print "Timeout...n";
}
$s->remove($socketResponse); # retire la gestion du handle à IO::Select
close $socketResponse; # ferme la socket
}
#----------------------------------------------------------------------------
Hope this helps :-)
Sébastien
--
[ retirer NOSPAM pour répondre directement
remove NOSPAM to reply directly ]
Bonjour ! Une petite question bete mais qui me turlupine ... Je veux envoyer un message via un socket et j'aimerai attendre un acquittement pendant un certain temps seulement. Ouvrir le socket je vois a peu pres et yecrire aussi mais pour attendre la reponse un certain temps ? ? ?
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; print $socketResponse $message; ############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse; }
Salut, tu peux utiliser IO::Select. L'avantage c'est qu'il est portable aussi bien sous Linux que sous Windows.
#---------------------------------------------------------------------------- use IO::Select; my $s=IO::Select->new(); my $timeout;
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; $s->add($socketResponse); # laisse IO::Select gérer ton handle if ($s->can_write($timeout)){ # Gestion du Time out if ($connected($socketResponse)){ # Si ta socket est bonne ... print $socketResponse $message; # alors envoyer le message print "Message Envoyé.n"; } else{ # Sinon, au Revoir print "Socket Déconnectée - Byen"; } } else { print "Timeout...n"; } $s->remove($socketResponse); # retire la gestion du handle à IO::Select close $socketResponse; # ferme la socket } #----------------------------------------------------------------------------
Hope this helps :-)
Sébastien
-- [ retirer NOSPAM pour répondre directement remove NOSPAM to reply directly ]
lasconic
Je connaissais pas ! donc ça aide ;-) je le mets sous le coude ! mais dans l'immediat je voulais attendre la reponse... donc je pense que le can_read fera l'affaire ! ;-)
merci Lasconic
lasconic wrote:
Bonjour ! Une petite question bete mais qui me turlupine ... Je veux envoyer un message via un socket et j'aimerai attendre un acquittement pendant un certain temps seulement. Ouvrir le socket je vois a peu pres et yecrire aussi mais pour attendre la reponse un certain temps ? ? ?
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; print $socketResponse $message; ############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse; }
Salut, tu peux utiliser IO::Select. L'avantage c'est qu'il est portable aussi bien sous Linux que sous Windows.
#---------------------------------------------------------------------------- use IO::Select; my $s=IO::Select->new(); my $timeout;
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; $s->add($socketResponse); # laisse IO::Select gérer ton handle if ($s->can_write($timeout)){ # Gestion du Time out if ($connected($socketResponse)){ # Si ta socket est bonne ... print $socketResponse $message; # alors envoyer le message print "Message Envoyé.n"; } else{ # Sinon, au Revoir print "Socket Déconnectée - Byen"; } } else { print "Timeout...n"; } $s->remove($socketResponse); # retire la gestion du handle à IO::Select close $socketResponse; # ferme la socket } #----------------------------------------------------------------------------
Hope this helps :-)
Sébastien
Je connaissais pas ! donc ça aide ;-) je le mets sous le coude ! mais
dans l'immediat je voulais attendre la reponse... donc je pense que le
can_read fera l'affaire ! ;-)
merci
Lasconic
lasconic wrote:
Bonjour !
Une petite question bete mais qui me turlupine ...
Je veux envoyer un message via un socket et j'aimerai attendre un
acquittement pendant un certain temps seulement. Ouvrir le socket je
vois a peu pres et yecrire aussi mais pour attendre la reponse un
certain temps ? ? ?
sub sendMessage{
my ($ip_address, $message)=@_;
my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address,
PeerPort => 2048,
Proto => "tcp",
Type => SOCK_STREAM)
or die "Couldn't connect to $ip_address:2048: $@n";
print $socketResponse $message;
############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse;
}
Salut,
tu peux utiliser IO::Select.
L'avantage c'est qu'il est portable aussi bien sous Linux que sous Windows.
#----------------------------------------------------------------------------
use IO::Select;
my $s=IO::Select->new();
my $timeout;
sub sendMessage{
my ($ip_address, $message)=@_;
my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address,
PeerPort => 2048,
Proto => "tcp",
Type => SOCK_STREAM)
or die "Couldn't connect to $ip_address:2048: $@n";
$s->add($socketResponse); # laisse IO::Select gérer ton handle
if ($s->can_write($timeout)){ # Gestion du Time out
if ($connected($socketResponse)){ # Si ta socket est bonne ...
print $socketResponse $message; # alors envoyer le message
print "Message Envoyé.n";
}
else{ # Sinon, au Revoir
print "Socket Déconnectée - Byen";
}
}
else {
print "Timeout...n";
}
$s->remove($socketResponse); # retire la gestion du handle à IO::Select
close $socketResponse; # ferme la socket
}
#----------------------------------------------------------------------------
Je connaissais pas ! donc ça aide ;-) je le mets sous le coude ! mais dans l'immediat je voulais attendre la reponse... donc je pense que le can_read fera l'affaire ! ;-)
merci Lasconic
lasconic wrote:
Bonjour ! Une petite question bete mais qui me turlupine ... Je veux envoyer un message via un socket et j'aimerai attendre un acquittement pendant un certain temps seulement. Ouvrir le socket je vois a peu pres et yecrire aussi mais pour attendre la reponse un certain temps ? ? ?
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; print $socketResponse $message; ############### C ici qu'il manque un truc ??!!!! ################
close $socketResponse; }
Salut, tu peux utiliser IO::Select. L'avantage c'est qu'il est portable aussi bien sous Linux que sous Windows.
#---------------------------------------------------------------------------- use IO::Select; my $s=IO::Select->new(); my $timeout;
sub sendMessage{ my ($ip_address, $message)=@_; my $socketResponse = IO::Socket::INET->new(PeerAddr => $ip_address, PeerPort => 2048, Proto => "tcp", Type => SOCK_STREAM) or die "Couldn't connect to $ip_address:2048: $@n"; $s->add($socketResponse); # laisse IO::Select gérer ton handle if ($s->can_write($timeout)){ # Gestion du Time out if ($connected($socketResponse)){ # Si ta socket est bonne ... print $socketResponse $message; # alors envoyer le message print "Message Envoyé.n"; } else{ # Sinon, au Revoir print "Socket Déconnectée - Byen"; } } else { print "Timeout...n"; } $s->remove($socketResponse); # retire la gestion du handle à IO::Select close $socketResponse; # ferme la socket } #----------------------------------------------------------------------------