Ich habe ein Gerät im Netzwerk, dessen IP-Adresse ich nicht kenne, um diese nun Herauszufinden sende ich einen Broadcast, das Gerät antwortet ebenfalls mit einem Broadcast. In Wireshark kommt die Antwort von Gerät auch an, nur weiss ich nicht wie ich Perl dazu bringe den Broadcast zu empfangen:
Der Broadcast Richtung Perl->Gerät ist mit dem Zielport 6799.
Der Broadcast Richtung Gerät->Perl ist mit dem Zielport 6800.
Daher kommt am Rechner ein Broadcast am Port 6800 an.
Gegoogelt habe ich natürlich auch, und schon diverse Methoden durchprobiert.
Danke im Voraus.
// Edit: OK, habs hinbekommen:
Der Broadcast Richtung Perl->Gerät ist mit dem Zielport 6799.
Der Broadcast Richtung Gerät->Perl ist mit dem Zielport 6800.
Daher kommt am Rechner ein Broadcast am Port 6800 an.
Gegoogelt habe ich natürlich auch, und schon diverse Methoden durchprobiert.
Code:
my $buffer;
my $remote_addr;
my $socket = IO::Socket::INET->new(PeerAddr => '255.255.255.255:6799',
Proto => 'udp',
LocalAddr => Net::Address::IP::Local->public,
LocalPort => 6800,
Broadcast => 1) or die "Can't bind: $@\n";
$socket->send("find");
while(1) {
$socket->recv($buffer, 128);
$remote_addr = $socket->peerport();
print "$remote_addr: $buffer\n";
}
Danke im Voraus.
// Edit: OK, habs hinbekommen:
Code:
my $socket = IO::Socket::INET->new(PeerAddr => '255.255.255.255:6799',
Proto => 'udp',
LocalAddr => Net::Address::IP::Local->public,
LocalPort => 6800,
Reuse => 1,
Broadcast => 1) or die "Can't bind: $@\n";
my $broadcast_socket = IO::Socket::INET->new(Proto => 'udp',
LocalPort => 6800,
Reuse => 1,
Broadcast => 1) or die "Can't bind: $@\n";
Zuletzt bearbeitet: