Schrift
[thread]8972[/thread]

UDP recv timeout?



<< >> 2 Einträge, 1 Seite
Gast Gast
 2007-05-06 21:57
#76495 #76495
hi,
ich möchte auf ein gesendetes UDP Paket eines empfangen...
wenn aber mein 1. Paket nicht ankommt bleibt das script ja logischerweise stehen...

nun habe ich versucht mit mit SIGALRM eine kleine time out Funktion zu schreiben, nur leider haut das nicht so ganz hin.
ich habe das ganze in einer while-schleife und möchte das er diese insofern er keine Antwort bekommt noch einmal von Anfang an durchläuft (daher das next).

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
    eval {
local $SIG{ALRM} = sub { next "timeout" };
alarm(20);
eval{
$portaddr = recv(SOCKET, $id, 10000, 0) or next "recv: $!";
($port, $ipaddr) = sockaddr_in($portaddr);
my $host = gethostbyaddr($ipaddr, AF_INET);
};
alarm(0);
};
alarm(0);
next if $@ && $@ !~ /timeout/;


da gibt er mit den Fehler
Code: (dl )
Exiting eval via next at test.pl line 33.

aus.

was kann ich daran verändern damit es läuft?
ptk
 2007-05-07 00:18
#76496 #76496
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Das ist kein Fehler, sondern eine Warnung, die man auch explizit ausschalten kann, falls man sich sicher ist, dass der Code läuft.
<< >> 2 Einträge, 1 Seite



View all threads created 2007-05-06 21:57.