Netty+;NIOdatagramChannel+;多播&x2B;Protobuf

Netty+;NIOdatagramChannel+;多播&x2B;Protobuf,netty,protocol-buffers,Netty,Protocol Buffers,当我执行datagramChannel.joinGroup(multicastAddress,networkInterface)时,我遇到了不受支持的操作异常;如果我做错了什么,请告诉我。我正在尝试使用NiodatagramChannel加入一个多播组。我不想使用OiodaTagram频道。 线程“main”java.lang.UnsupportedOperationException中出现异常 位于org.jboss.netty.channel.socket.nio.NioDatagramCh

当我执行datagramChannel.joinGroup(multicastAddress,networkInterface)时,我遇到了不受支持的操作异常;如果我做错了什么,请告诉我。我正在尝试使用NiodatagramChannel加入一个多播组。我不想使用OiodaTagram频道。 线程“main”java.lang.UnsupportedOperationException中出现异常 位于org.jboss.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:337) 位于io.netty.example.qotm.multicastereceiver.run(multicastereceiver.java:36) 位于io.netty.example.qotm.multicastereceiver.main(multicastereceiver.java:51)


只有在使用java 7+时才支持多播。看起来您使用的是早期版本。我将改进错误消息,使其更清楚原因。

如果有人能用另一种方法分享该示例,那就太好了,但是netty是必须的。你能发布完整的堆栈跟踪吗?感谢Norman对此进行研究,请在线程“main”中找到下面异常的完整stracktrackjava.lang.UnsupportedOperationException位于org.jboss.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:337)io.netty.example.qotm.multicastereceiver.run(multicastereceiver.java:36)io.netty.example.qotm.multicastereceiver.main(multicastereceiver.java:51)嗨,我正在使用java 1.7,但仍然得到相同的错误。请帮忙
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.concurrent.Executors;
import org.jboss.netty.bootstrap.ConnectionlessBootstrap;
import org.jboss.netty.channel.socket.DatagramChannel;
import org.jboss.netty.channel.socket.DatagramChannelFactory;
import org.jboss.netty.channel.socket.nio.NioDatagramChannelFactory;

public class MulticastReceiver {
private static ConnectionlessBootstrap connectionlessBootstrap;
public void run() {
    DatagramChannelFactory datagramChannelFactory = new   NioDatagramChannelFactory(
            Executors.newCachedThreadPool());

    connectionlessBootstrap = new ConnectionlessBootstrap(
            datagramChannelFactory);
    connectionlessBootstrap.setPipelineFactory(new ServerPipelineFactory());
    connectionlessBootstrap.setOption("reuseAddress", "reuseAddress");

    DatagramChannel datagramChannel = (DatagramChannel) connectionlessBootstrap
            .bind(new InetSocketAddress(8888));
    InetSocketAddress multicastAddress = new InetSocketAddress("224.2.2.3",
            8888);
    NetworkInterface networkInterface;
    try {
        networkInterface = NetworkInterface.getByInetAddress(InetAddress
                .getByName("224.2.2.3"));
        datagramChannel.joinGroup(multicastAddress, networkInterface);
        // datagramChannel.connect(new InetSocketAddress("239.195.255.255",
        // 8888));
    } catch (SocketException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}