Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4453[/thread]

IO::Select Problem: Verzöerung bei einkommenden Nachrichten

Leser: 3


<< >> 4 Einträge, 1 Seite
Gast Gast
 2007-02-16 17:53
#37457 #37457
Hallo,
Ich wollte ein kleiner Pler-prog schreiben, dass zwei Verbindungen zu IRC-Servern aufrechterhält. Ich mach also $sock1 und $sock2 mit new IO::Socket::INET und so..
und dann wie bei cpan.org oder auch hier in einem gewissen artikel beschrieben mit IO::Select->new eine schleife, die alle sockets managen kann.
Der relevante code ist folgender:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while(my @ready = $select->can_read)
{
foreach my $ts (@ready)
{
if($ts == $sock1)
{
my $input = <$sock1>;
chomp $input;
print "sock1: $input\n";
}
elsif($ts == $sock2)
{
my $input = <$sock2>;
chomp $input;
print "sock2: $input\n";
}
}
}

Ob das jetzt schön gecodet ist, sei mal dahingestellt, jedenfalls hab ich das problem, dass, wenn ich das programm im terminal starte, dann bekomme ich von einem irc-server über das socket ne ziemliche menge an infos. Aber nach ca 10 Zeilen bekomme ich keine Nachrichten mehr angezeigt für etwa 2 minuten, obwohl noch ettliches fehlt, was gesendet wird. Das kommt dann alles nach besagte 2 minuten auf einen schlag. Hat das irgenwas mit einem Puffer zu tun oder so, den ich bei select beachten muss?
wenn ich ein socket mit while (<$sock1>) auslese, habe ich diesen Fehler nicht und die zeilen werden alle genau dann ausgegeben, wenn sie vom irc-server gesendet werden.
Ich hoffe, ihr habt mein problem verstanden ;)
gruß, me²
esskar
 2007-02-16 18:43
#37458 #37458
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
benutzt nicht <$sock>
sondern die read function aus IO::Socket
Nordlicht
 2007-08-06 13:32
#97611 #97611
User since
2005-10-16
182 Artikel
BenutzerIn
[default_avatar]
Ich würde auch $socket->autoflush empfehlen.
styx-cc
 2007-08-08 16:27
#97779 #97779
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Nordlicht+2007-08-06 11:32:28--
Ich würde auch $socket->autoflush empfehlen.


Sollte bei einer halbwegs aktuellen Version nicht noetig sein...
Pörl.
<< >> 4 Einträge, 1 Seite



View all threads created 2007-02-16 17:53.