Thread "send: Cannot determine peer address" nach Timeout mit udp server (2 answers)
Opened by honesta at 2012-11-24 18:50

honesta
 2012-11-24 18:50
#163594 #163594
User since
2012-11-24
2 articles
BenutzerIn
[default_avatar]
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)

Code (perl): (dl )
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
#!/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);           
     }

Last edited: 2012-11-24 19:06:35 +0100 (CET)

View full thread "send: Cannot determine peer address" nach Timeout mit udp server