Schrift
[thread]11980[/thread]

Socket receive-Frage (Seite 4)

Leser: 6


<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten
Gast Gast
 2008-06-10 18:43
#110950 #110950
Ich habe mir gerade das Object interface durchgelesen.
Kann es sein, dass ich noch einen ListenIP und ListenPort festlegen muss oder sowas in der Art?!
H3llGhost
 2008-06-20 00:26
#111286 #111286
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Warum kommt in Zeile 24 immer ein unknown error?!

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
26
27
28
29
30
31
use strict;
use IO::Socket;

my $HOSTNAME = '127.0.0.1';
my $PORTNO = '27501';
my $length = 1024;

socket (SOCKET, PF_INET , SOCK_DGRAM, getprotobyname ('udp'))
or die "socket: $!";
my $ipaddr=inet_aton($HOSTNAME);
my $portaddr = sockaddr_in($PORTNO, $ipaddr) ;

my $msg = chr(0xff).chr(0xff)."Z".chr(0xff);

send (SOCKET, $msg, 0 , $portaddr) == length ($msg)
or die "cannot send to $HOSTNAME($PORTNO): $!";

my $rin = '';
vec($rin, fileno(SOCKET), 1) = 1;
my $rout;

while (select($rout = $rin, undef, undef, 10.0))
{
        $portaddr = recv(SOCKET, $msg , $length, 0)
        or die "recv: $!";
        
        ($PORTNO, $ipaddr) = sockaddr_in ($portaddr);
        my $host = gethostbyaddr ($ipaddr, AF_INET);

        print "$host($PORTNO) said $msg$/";
}


In Zeile 24 steht folgendes:
$portaddr = recv(SOCKET, $msg , $length, 0)

Warum kann da ein unknown error auftreten?
Danke im Vorraus!
GwenDragon
 2008-06-20 10:38
#111292 #111292
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Warum verwendest du kein
Code: (dl )
use warnings; 
am Anfang des Skripts?

Wegen des nachfolgenden
Code: (dl )
or die "recv: $!";
?
Wie lautet die Fehlermeldung genau?
H3llGhost
 2008-06-20 16:33
#111298 #111298
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Ähm ...
Die Fehlermeldung heißt unknown error und das wars dann.
MatthiasW
 2008-06-21 13:08
#111319 #111319
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Wieso verwendest du denn nicht IO::Socket::INET? Ich finde, dass es das Ganze um einiges einfacher macht.

MfG

edit: Blödsinn entfernt...
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
Gast Gast
 2008-07-01 11:00
#111713 #111713
Das ist mal eine gute Frage ... ;)

Ich habe mir für den Server nun folgendes ausgedacht:

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
26
27
28
use strict;
no strict 'vars';

use IO::Socket;

$sock = IO::Socket::INET->new(LocalAddr => 'localhost',
                                                                LocalPort => 9000,
                                                                Proto => 'udp');
                                                                
$main->repeat(100=>\&run);      
                                                        
sub run
{                                                               
        while($new_sock = $listenSock->accept())
        {
          print RX "peer=".$new_sock->peerhost."\n";
          $rxText="";
          do
            {
              $new_sock->recv($rx_txt,4095);
              $rxText.=$rx_txt;
             } until (!length($rx_txt));

             print RX "$rxText\n\n";
             print LOGFILE "$rxText\n";
            $new_sock->close();
        }
}


Was meint ihr dazu?
<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten



View all threads created 2008-06-05 17:32.