Thread UDP Broadcast senden und Antworten lesen?
(3 answers)
Opened by Thomas at 2012-01-13 15:02
Hallo,
folgendes Problem: Mit einem Client möchte ich ein Broadcast senden und alle Antworten von Servern ausgeben: Wenn ich Client.pl Zeile 9 auskommentiere und die Zeile darunter nutze. (192.168.0.15) funktioniert alles wie gewünscht. Zusammengefasst, der Unicast funktionert wie gewünscht. Client zeigt Daten vom Server an. Beim Broadcast zeigt der Client KEINE Daten vom Server?! Hat jemand einen Idee? Vielen Dank. Client: 192.168.0.14 Server: 192.168.0.15 TCPDUMP: Code: (dl
)
1 # Broadcast: Client: 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 #!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; use IO::Select; $| = 1; my ($socket,$select,$data,$peer_address,$peer_port); $socket = new IO::Socket::INET ( PeerAddr => inet_ntoa(INADDR_BROADCAST), # PeerAddr => '192.168.0.15', PeerPort => '5000', LocalPort => '5001', Proto => 'udp', Broadcast => '1', ) or die "ERROR in Socket Creation : $!\n"; $select = new IO::Select or die "no select: $!\n"; $select->add( $socket ) or die "no add socket: $!"; print "Start Client.\n"; $socket->send('data from client') or die "send faild: $!"; while ($select->can_read(2)){ $socket->recv($data,128); $peer_address = $socket->peerhost(); $peer_port = $socket->peerport(); print "($peer_address:$peer_port) said: \"$data\"\n"; } $socket->close(); print "Ende\n"; Server: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; $| = 1; my ($socket,$received_data,$peer_address,$peer_port); $socket = new IO::Socket::INET ( LocalPort => '5000', Proto => 'udp', Broadcast => '1', ) or die "ERROR in Socket Creation : $!\n"; print "Start Server.\n"; while(1) { $socket->recv($received_data,1024); $peer_address = $socket->peerhost(); $peer_port = $socket->peerport(); print "($peer_address:$peer_port) said: \"$received_data\"\n"; $socket->send('data from Server') or print "Can't send data! $!\n"; } $socket->close(); Last edited: 2012-01-13 15:21:46 +0100 (CET) |