A DatagramChannel-Based Multicast Client Program - Java Network

Java examples for Network:Datagram Channel

Description

A DatagramChannel-Based Multicast Client Program

Demo Code

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.NetworkInterface;
import java.net.StandardProtocolFamily;
import java.net.StandardSocketOptions;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.nio.channels.MembershipKey;

public class Main {
  public static void main(String[] args) {
    MembershipKey key = null;/* w  w  w .  j ava  2  s.  com*/
    try (DatagramChannel client = DatagramChannel
        .open(StandardProtocolFamily.INET)) {
      NetworkInterface interf = NetworkInterface
          .getByName("test");

      client.setOption(StandardSocketOptions.SO_REUSEADDR, true);
      client.bind(new InetSocketAddress(5555));
      client.setOption(StandardSocketOptions.IP_MULTICAST_IF, interf);

      InetAddress group = InetAddress.getByName("127.0.0.1");
      key = client.join(group, interf);

      System.out.println("Joined the multicast group:" + key);
      System.out.println("Waiting for a message from the"
          + " multicast group....");

      ByteBuffer buffer = ByteBuffer.allocate(1048);

      client.receive(buffer);

      buffer.flip();
      int limits = buffer.limit();
      byte bytes[] = new byte[limits];
      buffer.get(bytes, 0, limits);
      String msg = new String(bytes);

      System.out.format("Multicast Message:%s%n", msg);
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (key != null) {
        key.drop();
      }
    }
  }

}

Related Tutorials