使用DatagramChannel编写UDP组播客户端
/*来自 时 代 J a v a 公 众 号 - nowjava.com*/ 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.CharBuffer; import java.nio.channels.DatagramChannel; import java.nio.channels.MembershipKey; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; public class Main {/*来自 NowJava.com*/ public static void main(String[] args) { CharBuffer charBuffer = null; Charset charset = Charset.defaultCharset(); CharsetDecoder decoder = charset.newDecoder(); ByteBuffer datetime = ByteBuffer.allocateDirect(65507); try (DatagramChannel datagramChannel = DatagramChannel .open(StandardProtocolFamily.INET)) { InetAddress group = InetAddress.getByName("225.14.51.6"); if (group.isMulticastAddress()) { if (datagramChannel.isOpen()) { NetworkInterface networkInterface = NetworkInterface .getByName("test"); datagramChannel.setOption(StandardSocketOptions.SO_REUSEADDR, true); datagramChannel.bind(new InetSocketAddress(5555)); MembershipKey key = datagramChannel.join(group, networkInterface); while (true) { if (key.isValid()) { datagramChannel.receive(datetime); datetime.flip(); charBuffer = decoder.decode(datetime); System.out.println(charBuffer.toString()); datetime.clear(); } else {