Nabendschön alle zusammen,
habe ein kleines Problem und würde mich über eure Mithilfe freuen!
Folgender udp-Server soll nach einem Timeout (über eval{}) 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
}
Last edited: 2012-11-24 19:06:35 +0100 (CET)