Java 多播套接字

转载 2012年03月29日 11:22:37
多播数据报套接字类用于发送和接收 IP 多播包。MulticastSocket 是一种 (UDP) DatagramSocket,它具有加入 Internet 上其他多播主机的“组”的附加功能。

      1、IP多播地址和多播组

           IP多播通信必须依赖于IP多播地址。在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,地址 224.0.0.0 被保留,不应使用。 并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类。其中,局部链接多播地址范围在224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;预留多播地址为224.0.1.0~238.255.255.255,可用于全球范围(如 Internet)或网络协议;管理权限多播地址为239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。

 

      使用同一个IP多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。一个多播组的成员是随时变动的,一台主机可以随时加入或离开多播组,多播组成员的数目和所在的地理位置也不受限制,一台主机也可以属于几个多播组。此外,不属于某一个多播组的主机也可以向该多播组发送数据包。


      2、加入或退出多播组

           可以通过使用所需端口创建 MulticastSocket,然后调用 joinGroup(InetAddress groupAddr) 方法来加入多播组。

      套接字通过 leaveGroup(InetAddress addr) 方法放弃组中的成员资格。

 

      3、发送或接收数据包

           当套接字预定多播组/端口时,像所有其他成员一样(组和端口相同),它将接收其他成员发送的数据报。
           将消息发送到多播组时,该主机和端口的所有预定接收者都将接收到消息(在数据包的生存范围内)。套接字不必成为多播组的成员即可向其发送消息。


      4、多个 MulticastSocket 可以同时预定多播组和端口,并且都会接收到组数据包。

 

      5、不允许 applet 使用多播套接字。

// join a Multicast group and send the group salutations
String msg = "Hello";
InetAddress group = InetAddress.getByName("228.5.6.7");
MulticastSocket s = new MulticastSocket(6789);
s.joinGroup(group);
DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), group, 6789);
s.send(hi);
// get their responses!
byte[] buf = new byte[1000];
DatagramPacket recv = new DatagramPacket(buf, buf.length);
s.receive(recv);
...
// OK, I'm done talking - leave the group...
s.leaveGroup(group);


参考文章:

http://blog.csdn.net/daviyang35/archive/2007/05/14/1608013.aspx


相关文章推荐

IP多播技术及其编程

IP多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。多播作为一点对多点的通信,是节省网络带宽的有效方法之一。在网络音...

JAVA使用多播套接字实现群聊室(局域网)

import java.awt.Dimension; import java.awt.TextArea; import java.awt.TextField; import java.awt.Tool...

使用套接字实现多播通信

多播通信需要如下三个条件: (1)使用UDP传输协议 (2)使用多播地址(224.0.0.1-239.255.255.255) (3)另外需要中间的所有路由器都需要支持多播协议才可以。 需要注...

Java 套接字(Socket)

  • 2010-07-01 22:47
  • 87KB
  • 下载

JAVA套接字(Socket)101七天系列—第五天【一个多线程的示例】

一个多线程的示例  1. 介绍 前面的示例教给您基础知识,但并不能令您更深入。如果您到此就停止了,那么您一次只能处理一台客户机。原因是 handleConnection() 是一个阻塞...

java TCP/IP Socket编程-----基本套接字-----获取本机地址-----笔记3

概述: 开始上硬菜的了,现在我们可以学习如何编写自己的套接字应用程序了。我们首先通过使用InetAddress类和SocketAddress类来示范Java应用程序如何识别网络主机。然后,举了一个使...

java套接字聊天

  • 2017-06-07 21:58
  • 277KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)