Hi,
wie kann man mit der perl recv funktion binärdaten empfangen?
Ich habe im netz folgendes Programm gefunden, weil ich einfach eine simple Möglichkeit wollte, udp packets zu dumpen, um die Ausgaben eines Tools,was ich gerade schreibe zu sehen
`#! /usr/bin/perl
use warnings;
use strict;
use Socket qw(:all);
$|++; # no suffering from buffering
my $udp_port = 666;
socket( UDPSOCK, PF_INET, SOCK_DGRAM, getprotobyname('udp') ) or die "+socket: $!";
select( ( select(UDPSOCK), $|=1 )[0] ); # no suffering from buffering
setsockopt( UDPSOCK, SOL_SOCKET, SO_REUSEADDR, 1 )
or die "setsockopt SO_REUSEADDR: $!";
my $broadcastAddr = sockaddr_in( $udp_port, INADDR_ANY );
bind( UDPSOCK, $broadcastAddr ) or die "bind failed: $!\n";
my $input;
while( my $addr = recv( UDPSOCK, $input, 4096, 0 ) ) {
my $hexstr = $input;
$hexstr =~ s/(.)/sprintf("%02x",ord($1))/eg;
print "$addr => $hexstr - $input\n";
}
Mein Problem ist, dass die Variable $input ein string ist, anstatt ein byte array.
Der Sender verschickt ein uint32 und das perl Programm empfängt nur das zuerst gesendete byte, wenn das 2. 0 ist
wie komme ich hier weiter?
Gruß
Vlad