- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java组播讲述
网络数据传播按照接收者的数量,可分为以下三种方式:
单播:?提供点对点的通信
广播:?发送者每次发送的数据可以被广播范围内的所有接受者接收。
组播:发送者每次发送的数据可以被小组内的所有接收者接收。
?
组播组内的所有主机共享同一个地址,这种地址称为组播地址,组播地址是范围在~55之间的IP地址。此范围内的所有地址的前4个二进制为都是“1110“。组播地址也被称为D类IP地址,与其它的A类、B类和C类地址相区别。组播组是开放的,主机可以在任何时候进入或离开组。
IANA(Internet Assigned Numbers Authority)组织负责分发永久组播地址。
组播与单播UDP的区别在于,前者必须考虑TTL(Time to live)值,它用IP数据包的头部的一个字节表示。
TTL通过限制IP包被丢弃前通过的路由器数目,来决定IP包的生存时间。IP包每通过一个路由器,TTL就减一,当TTL变为0,这个包就被丢弃。
TTL的一个作用是防止配置有误的路由器把包在路由器之间无限的来回传递,还有一个作用是限制组播的地理范围。
.MulticastSocket具有组播的功能,它是DatagramSocket的子类:
public class MulitcastSocket extends DatagramSocket和DataSocket一样,MulticastSocket业余DatagramPacket搭配使用,DatagramPacket用来接收和发送的组播数据报。
如果要接收组播数据报,只需要创建一个MulticastSocket,把它加入到组播组,就能接收发送到该组的组播数据。
发送组播数据报与发送单播数据报非常相似,只需创建一个MulticastSocket,无需把它加入组播组(当然也可以把它加入到组播组),就能向一个组播组发送数据。
?
与组播通信
MulticastSocket支持以下四种操作:
1)?????????加入到组播组:joinGroup方法
2)?????????想组中成员发送数据报:send()方法
3)?????????接收发送到组播组的数据报:receive()方法
4)?????????离开组播组:?leaveGroup()方法
5)?????????MuliticastSocket类提供了两组用于设置和读取网络接口的方法。MuliticastSocket只会对该网络接口中的组收发组播数据:
//第1组方法
public void setInterface(InetAddress address)throws SocketException
public InetAddress getInterface()throws SocketException
//第2组方法
public void setNetworkInterface(NetworkInterface interface)throws SocketException
public NetworkInterface getNetworkInterface() throws SocketException
?
?java UDP广播与定点单播和组播
???????UDP为单向通信无法保证服务器接收端接受的顺序,也不能保证一定能收到发送端发送的包。是一种不可靠得通信方式。但是他是一种快速的通信方式(相对于TCP要快速)。
???????说到UDP,就需要了解一下UDP通信时候用到的ip地址范围都代表着什么。
???????ipv4中的多播地址范围是:到55。
???????广播地址可以用:55。
???????广播方式:就是在同一个路由网段内部,所有的服务器均能收到client发送的包。但是只有监听了client发送端口的server才具有相对应的响应处理能力,如果没有这个端口的监听,将不会对client发送的包进行处理。广播的缺点就是浪费带宽?。对网络会造成压力。但是广播不能跨路由。
???????多播方式:在java实现中,需要加入多播组内进行处理。好处是相对于广播方式,多播方式浪费带宽要小的多。其实就是一个client向多个已知的ip中发送消息(个人了解)。
下面是java广播方式的实现
client:
package?com.brilliance.udp;
import?java.io.IOException;
import?.DatagramPacket;
import?.DatagramSocket;
import?.InetAddress;
import?.SocketException;
public?class?UDPDatagramSocketClient?{
???public?static?void?main(St
文档评论(0)