Thread UDP recv timeout? (1 answers)
Opened by Gast at 2007-05-06 21:57

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?

View full thread UDP recv timeout?