Java Reference
In-Depth Information
interface has been explicitly set in the constructor or with setNetworkInterface() , it
returns a placeholder object with the address “0.0.0.0” and the index -1. For example,
this code fragment prints the network interface used by a socket:
NetworkInterface intf = ms . getNetworkInterface ();
System . out . println ( intf . getName ());
Two Simple Examples
Most multicast servers are indiscriminate about who they will talk to. Therefore, it's easy
to join a group and watch the data that's being sent to it. Example 13-1 is a MulticastS
niffer class that reads the name of a multicast group from the command line, constructs
an InetAddress from that hostname, and creates a MulticastSocket , which attempts
to join the multicast group at that hostname. If the attempt succeeds, MulticastSniff
er receives datagrams from the socket and prints their contents on System.out . This
program is useful primarily to verify that you are receiving multicast data at a particular
host. Most multicast data is binary and won't be intelligible when printed as text.
Example 13-1. Multicast sniffer
import java.io.* ;
import java.net.* ;
public class MulticastSniffer {
public static void main ( String [] args ) {
InetAddress group = null ;
int port = 0 ;
// read the address from the command line
try {
group = InetAddress . getByName ( args [ 0 ]);
port = Integer . parseInt ( args [ 1 ]);
} catch ( ArrayIndexOutOfBoundsException | NumberFormatException
| UnknownHostException ex ) {
System . err . println (
"Usage: java MulticastSniffer multicast_address port" );
System . exit ( 1 );
}
MulticastSocket ms = null ;
try {
ms = new MulticastSocket ( port );
ms . joinGroup ( group );
byte [] buffer = new byte [ 8192 ];
while ( true ) {
DatagramPacket dp = new DatagramPacket ( buffer , buffer . length );
ms . receive ( dp );
Search WWH ::




Custom Search