我使用 MulticastSocket 在启用 Android 的开发板(4.3 版)上有一个工作的多播接收器;我想要的是能够使用 NIO 通道。由于 Android 中不存在 MulticastChannel,我尝试使用 DatagramChannel 代替它,但到目前为止没有任何运气。如果有人有任何关于将频道配置为仅进行多播接收的信息,那就太棒了!
下面是一些不起作用的示例代码,但可以大致了解我如何进行设置:
InetAddress groupAddr = InetAddress.getByName(groupAddress); SelectorProvider 提供者 = SelectorProvider.provider(); 选择器选择器 = provider.openSelector(); DatagramChannel dc = DatagramChannel.open(); // 这个转换失败 MulticastSocket socket = (MulticastSocket) dc.socket(); //设置ttl socket.setTimeToLive(16); // 设置接收缓冲区 socket.setReceiveBufferSize(65536); socket.setReuseAddress(true); // 加入群 socket.joinGroup(groupAddr);
产生这个(我有点期待):
11-14 18:11:56.203:E/AndroidRuntime(22315):致命异常:DatagramListener 11-14 18:11:56.203: E/AndroidRuntime(22315): java.lang.ClassCastException: java.nio.DatagramChannelImpl$DatagramSocketAdapter 不能转换为 java.net.MulticastSocket