基于DatagramChannel的多播客户端程序
import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.NetworkInterface; /** from * 时 代 J a v a 公 众 号 - nowjava.com **/ 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; try (DatagramChannel client = DatagramChannel .open(StandardProtocolFamily.INET)) { NetworkInterface interf = NetworkInterface .getByName("test"); client.setOption(StandardSocketOptions.SO_REUSEADDR, true);/*来自 N o w J a v a . c o m - 时 代 Java*/ 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);