创建MulticastSocket对象后,还须要将该MulticastSocket增加到指定的多点广播地址,MulticastSocket使用joinGroup()方法增加指定组;使用leaveGroup()方法脱离一个组。
1、joinGroup(InetAddress multicastAddr):将该MulticastSocket增加指定的多点广播地址。
2、leaveGroup(InetAddress multicastAddr):让该MulticastSocket离开指定的多点广播地址。
应用程序仅仅将数据报包发送给组播地址,路由器将确保包被发送到改组播组中的全部主机。
组播地址:称为组播组的一组主机所共享的地址。组播地址的范围在224.0.0.0--- 239.255.255.255之间(都为D类地址 1110开头)。
备注:假设如今有三台机器A、B、C,三台机器IP地址都不一样,A\B为server监听广播消息,C为client发送广播消息,个人理解是将A、B两台机器的MulticastSocket对象绑定在组播地址中的当中一个,然后Cclient发送消息的组播地址一致,则A、B就行接收C发送的消息。
假设MulticastSocket用于接收信息则使用默认地址和随机port就可以,可是假设用来接收信息,则必需要指定port,否则发送方无法确定发送数据报的目标port。
三代码演示样例
MulticastSocket _socket = new MulticastSocket(5353);
InetSocketAddress sockaddr = new InetSocketAddress(224.0.0.251, 5353);
try {
_socket.setNetworkInterface(hostInfo.getInterface());
_socket.joinGroup(sockaddr, hostInfo.getInterface());
} catch (SocketException e) {
DLog.w(TAG, TAGClass + "openMulticastSocket() Set network interface exception: "
+ e.getMessage());
}
}
_socket.setTimeToLive(255);