java channel使用_java11教程--接口MulticastChannel用法

支持Internet协议(IP)多播的网络通道。

IP多播是将IP数据报传输到由单个目标地址标识的零个或多个主机的组的成员。

一个通道可以加入多个多播组,并可以在几个interfaces上加入同一个组。 通过在返回的MembershipKey上调用drop方法来删除成员资格。 如果底层平台支持源过滤,则可以使用block和unblock方法来阻止或取消阻止来自特定源地址的多播数据报。

成员资格是累积的 ,可以使用相同的组和接口再次调用此方法,以允许从其他源地址接收数据报。 该方法返回MembershipKey ,表示从给定源地址接收数据报的成员资格。 调用密钥的drop方法会删除成员资格,以便无法再接收来自源地址的数据报。

平台依赖

多播实现旨在直接映射到本机多播设施。

因此,在开发接收IP多播数据报的应用程序时,应考虑以下各项:

通道的创建应指定ProtocolFamily ,该通信将与通道将加入的多播组的地址类型相对应。 当多播组的地址对应于另一个协议族时,无法保证一个协议族中的套接字的通道可以加入和接收多播数据报。 例如,如果到IPv6套接字的通道可以加入IPv4多播组并接收发送到该组的多播数据报,则它是特定于实现的。

通道的套接字应绑定到wildcard地址。 如果套接字绑定到特定地址而不是通配符地址,那么如果套接字接收到多播数据报,则它是特定于实现的。

这是允许组的多个成员绑定到同一地址所必需的。

用法示例:

// join multicast group on this interface, and also use this

// interface for outgoing multicast datagrams

NetworkInterface ni = NetworkInterface.getByName("hme0");

DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)

.setOption(StandardSocketOptions.SO_REUSEADDR, true)

.bind(new InetSocketAddress(5000))

.setOption(StandardSocketOptions.IP_MULTICAST_IF, ni);

InetAddress group = InetAddress.getByName("225.4.5.6");

MembershipKey key = dc.join(group, ni);

关闭此频道。

加入多播组以开始接收发送给该组的所有数据报,并返回成员资格密钥。

加入多播组以开始接收从给定源地址发送到该组的数据报。

关闭此频道。

否则,此方法的行为与Channel接口指定的完全相同 。

加入多播组以开始接收发送给该组的所有数据报,并返回成员资格密钥。

如果此通道当前是给定接口上的组的成员以接收所有数据报,则返回表示该成员资格的成员资格密钥。 否则,此通道将加入组,并返回生成的新成员资格密钥。

组播信道可以加入多个组播组,包括多个接口上的同一组。 实现可以对可以同时加入的组的数量施加限制。

加入多播组以开始接收从给定源地址发送到该组的数据报。

如果此通道当前是给定接口上的组的成员,以从给定的源地址接收数据报,则返回表示该成员资格的成员资格密钥。 否则,此通道将加入组,并返回生成的新成员资格密钥。

成员资格是累积的,并且可以使用相同的组和接口再次调用此方法,以允许接收由其他源地址发送到该组的数据报。

变量和类型

方法

描述

void

关闭此频道。

加入多播组以开始接收发送给该组的所有数据报,并返回成员资格密钥。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值