H
honesta
Mahlzeit,
ich habe ein kleines Problem und würde mich über eure Mithilfe freuen!
Folgender UDP-Server soll nach einem Timeout über eval{} (wenn dieser nach 5 Sekunden nichts empfängt) dem Client "$stuff" mitteilen. Leider bekomme ich nach dem Timeout folgende Fehlermeldung: "Cannot determine peer address at udp_server.pl line 24". Warum wird mein Socket bitteschön geschlossen (?) nach dem Timeout?! Paradoxerweise, wenn ich den Socket neu einbinde nach dem Timeout, bekomme ich folgende Meldung: "ERROR in socket creation: Die Adresse wird bereits verwendet".
Ob ich nun statt "die", "last" verwende, ändert auch nichts.
Interessanterweise tritt der Fehler in der Kommandozeile auf, aber nicht im Debugger.
Vielen Dank im Voraus!
Perl v5.14.2
Linux version 3.1.0-1.2-desktop
gcc version 4.6.2 (SUSE Linux)
openSUSE 12.1 (x86_64)
P.S.: Ich hatte diesen Beitrag bereits in einem anderen Forum (erst beste bei google) gepostet, aber das ist eingeschlafen.
ich habe ein kleines Problem und würde mich über eure Mithilfe freuen!
Folgender UDP-Server soll nach einem Timeout über eval{} (wenn dieser nach 5 Sekunden nichts empfängt) dem Client "$stuff" mitteilen. Leider bekomme ich nach dem Timeout folgende Fehlermeldung: "Cannot determine peer address at udp_server.pl line 24". Warum wird mein Socket bitteschön geschlossen (?) nach dem Timeout?! Paradoxerweise, wenn ich den Socket neu einbinde nach dem Timeout, bekomme ich folgende Meldung: "ERROR in socket creation: Die Adresse wird bereits verwendet".
Ob ich nun statt "die", "last" verwende, ändert auch nichts.
Interessanterweise tritt der Fehler in der Kommandozeile auf, aber nicht im Debugger.
Vielen Dank im Voraus!
Code:
#!/usr/bin/perl
use strict 'vars';
use warnings;
use IO::Socket::INET;
my $port="50000";
my $socket;
my $get;
my $stuff;
$socket = new IO::Socket::INET (
LocalPort => $port,
Proto => 'udp',
) or die "ERROR in socket creation: $!\n";
eval {
local $SIG{ALRM} =sub {die};
alarm(5);
$socket -> recv($get, 1024);
alarm(0);
};
if ($@) {
$socket->send($stuff);
}
Perl v5.14.2
Linux version 3.1.0-1.2-desktop
gcc version 4.6.2 (SUSE Linux)
openSUSE 12.1 (x86_64)
P.S.: Ich hatte diesen Beitrag bereits in einem anderen Forum (erst beste bei google) gepostet, aber das ist eingeschlafen.