首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netty+NIOdatagramChannel+Multicast+Protobuf

Netty+NIOdatagramChannel+Multicast+Protobuf
EN

Stack Overflow用户
提问于 2014-01-29 13:46:18
回答 1查看 1.3K关注 0票数 0

当我执行datagramChannel.joinGroup(multicastAddress,networkInterface)时,我得到了UnsupportedOperationException;如果我做错了什么,请让我知道。我正在尝试使用NiodatagramChannel加入多播组。我不想使用OioDatagramChannel。org.jboss.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:337)处的io.netty.example.qotm.MulticastReceiver.run(MulticastReceiver.java:36)处的线程"main“java.lang.UnsupportedOperationException中出现异常

代码语言:javascript
复制
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();
    }

}
EN

回答 1

Stack Overflow用户

发布于 2014-01-30 13:20:28

仅当使用java 7+时才支持多播。似乎您使用的是较早的版本。我将改进错误消息,使其更清楚是什么原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21423070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档