Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lecture sur socket non bloquante.

3 réponses
Avatar
Bastit Benoît
J'essaye de coder un server en perl .
Et je suis confronté a une dificulter la lecture est bloquante.
Se qui m'empeche d'envoyer donnée dans que j'ai rien lu.

Je vois la solution comme ca .
j'ai bien pense a fair un fork pour la lecture et ecriture .
Mais le fork marche tres mal sous windows



while(1) {
Lecture de la socket pendant 1 a 2 sec
traitement des donner si quelque chose
Envois des donnée si quelle que chose dans le STDIN penant 1 a 2 sec
}

3 réponses

Avatar
MeiK
J'essaye de coder un server en perl .
Et je suis confronté a une dificulter la lecture est bloquante.
Se qui m'empeche d'envoyer donnée dans que j'ai rien lu.

Je vois la solution comme ca .
j'ai bien pense a fair un fork pour la lecture et ecriture .
Mais le fork marche tres mal sous windows



while(1) {
Lecture de la socket pendant 1 a 2 sec
traitement des donner si quelque chose
Envois des donnée si quelle que chose dans le STDIN penant 1 a 2 sec
}





Boah tu peux aussi utiliser select afin de monitorer ta socket, et ne
lire que si tu as des donnees a lire.
http://www.perlfect.com/articles/select.shtml

--
Michael K. (epitech)
http://etudiant.epitech.net/~meik/
"SoftIce est avant tout un desassembleur."
E.D au proces en appel de Guillermito

Avatar
Bastit Benoît
J'essaye de coder un server en perl .
Et je suis confronté a une dificulter la lecture est bloquante.
Se qui m'empeche d'envoyer donnée dans que j'ai rien lu.

Je vois la solution comme ca .
j'ai bien pense a fair un fork pour la lecture et ecriture .
Mais le fork marche tres mal sous windows



while(1) {
Lecture de la socket pendant 1 a 2 sec
traitement des donner si quelque chose
Envois des donnée si quelle que chose dans le STDIN penant 1 a 2 sec
}





Boah tu peux aussi utiliser select afin de monitorer ta socket, et ne
lire que si tu as des donnees a lire.
http://www.perlfect.com/articles/select.shtml

Yep j'ai enfin reusis Avec IO::Select;

Mon code pour tester si sa peut servir a quelqu'un :)


use IO::Socket;
use IO::Select;
$|++;

my $server = IO::Socket::INET->new(LocalPort => 7878, Listen => 20,
Proto => 'tcp', Reuse => 1);
die $! unless $server;
while(1){
my $socket= $server->accept();
$socket->autoflush(1);
$s = IO::Select->new();
$s->add($socket);
$check=1;

# bloucle principal
while($check){
my @ready = $s->can_read(.2);
for my $sockread (@ready){
#boucle de lecture avec $handle si lecture
my $data = <$sockread>;
print $data . "n" ;
}
# code message si necessaire avec timing

}
}


Avatar
tfe
Utiliser $server->can_read($timeout) est preferable au while(1).


J'essaye de coder un server en perl .
Et je suis confronté a une dificulter la lecture est bloquante.
Se qui m'empeche d'envoyer donnée dans que j'ai rien lu.

Je vois la solution comme ca .
j'ai bien pense a fair un fork pour la lecture et ecriture .
Mais le fork marche tres mal sous windows



while(1) {
Lecture de la socket pendant 1 a 2 sec
traitement des donner si quelque chose
Envois des donnée si quelle que chose dans le STDIN penant 1 a 2 s ec
}





Boah tu peux aussi utiliser select afin de monitorer ta socket, et ne
lire que si tu as des donnees a lire.
http://www.perlfect.com/articles/select.shtml

Yep j'ai enfin reusis Avec IO::Select;

Mon code pour tester si sa peut servir a quelqu'un :)


use IO::Socket;
use IO::Select;
$|++;

my $server = IO::Socket::INET->new(LocalPort => 7878, Listen => 20,
Proto => 'tcp', Reuse => 1);
die $! unless $server;
while(1){
my $socket= $server->accept();
$socket->autoflush(1);
$s = IO::Select->new();
$s->add($socket);
$check=1;

# bloucle principal
while($check){
my @ready = $s->can_read(.2);
for my $sockread (@ready){
#boucle de lecture avec $handle si lecture
my $data = <$sockread>;
print $data . "n" ;
}
# code message si necessaire avec timing

}
}