我越來越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();
}
}
如果有人可以用另一種方法分享這個例子,但是netty必須是 – user3247418
,那麼你會發布完整的堆棧跟蹤嗎? –
感謝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