2014-01-29 27 views
0

我越來越UnsupportedOperationException當我做datagramChannel.joinGroup(multicastAddress,networkInterface);請讓我知道如果我做錯了什麼。我正嘗試使用NiodatagramChannel加入多播組。我不想使用OioDatagramChannel。 線程「main」中的異常java.lang.UnsupportedOperationException at org.jboss.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:337) at io.netty.example.qotm.MulticastReceiver.run( MulticastReceiver.java:36) 在io.netty.example.qotm.MulticastReceiver.main(MulticastReceiver.java:51)Netty + NIOdatagramChannel +組播+ Protobuf

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(); 
    } 

} 
+0

如果有人可以用另一種方法分享這個例子,但是netty必須是 – user3247418

+0

,那麼你會發布完整的堆棧跟蹤嗎? –

+0

感謝Norman對此進行調查,請在線程「main」中的異常下方找到完整的漏洞索引號,在org.jboss.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:337) \t在io.netty.example.qotm.MulticastReceiver.run(MulticastReceiver.java:36) \t在io.netty.example.qotm.MulticastReceiver.main(MulticastReceiver.java:51) – user3247418

回答

0

組播是僅支持使用Java時7+。看起來像你使用的是早期版本。我會改進錯誤信息,使其更清楚原因。

+0

嗨,我使用Java 1.7但仍然得到相同的錯誤。請幫忙 – user3247418