Schrift
[thread]4288[/thread]

Asynchrones Socket lesen



<< >> 2 Einträge, 1 Seite
betterworld
 2004-07-13 16:16
#37193 #37193
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Vielleicht hilft Dir select() weiter.
weismat
 2004-07-13 15:49
#37194 #37194
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Ich habe ein Programm, daß asynchron von einem Socket lesen muss.
Ich schicke zunächst eine Nachricht und bekomme dann eine Antwort und anschließend eine beliebige Anzahl Nachrichten.
Meine Verarbeitung mit recv funktioniert auch, nur sorgt daß für eine sehr hohe Auslastung auf der Maschine.
Wie würde ich das Programmieren, damit ich mit einem Timeout lese und dann vielleicht nur alle 5-10 Sekunden prüfe, ob ich eine Nachricht bekommen habe.
Meine Receive Funktion sieht wie folgt aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sub receive {
#no arguments- receives a new message
my($message, $j, $i, $length);
$message ="";
my $self=$_[0];
my $remote=$self->{remote};
$remote->recv($length, 10);
while ($length){
$remote->recv(my $message_block, $length > 4096 ? 4096 : $length);
$message .= $message_block;
$length -= length $message_block;
}

return $message;
}

Vielen Dank!
<< >> 2 Einträge, 1 Seite



View all threads created 2004-07-13 16:16.