多播数据报套接字类用于发送和接收 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
分享到:
相关推荐
"JAVA 写的多播套接字群聊聊天小程序" 指的是一个使用Java编程语言开发的、基于多播套接字技术实现的局域网群聊应用。多播套接字允许一个发送者同时向多个接收者发送数据,非常适合构建聊天程序,尤其是群聊功能。 ...
2. **Java多播套接字(MulticastSocket)**: Java提供了一个`java.net.MulticastSocket`类,用于创建支持多播的套接字。这个类继承自`java.net.DatagramSocket`,所以它可以发送和接收UDP数据报(即`java.net....
### 套接字编程基础知识点详解 #### 1.1 什么是套接字 套接字(Socket),作为同一台主机内部应用层与传输层之间的接口,扮演着应用程序和网络之间的桥梁角色,即应用程序接口(API)。它允许应用程序通过网络进行...
在Java中,我们可以使用Java的多播套接字(MulticastSocket)来实现这一功能。本实例将深入讲解如何在Java中创建组播组并进行数据的发送与接收。 首先,让我们了解什么是IP多播。IP多播是一种网络通信方式,它允许...
三、处理多声道和不同采样率 如果PCM文件是立体声或具有不同的采样率,可能需要对音频数据进行适当的处理。例如,可以使用`AudioFormat.Encoding.PCM_SIGNED`指定数据类型,根据声道数设置`channels`参数,根据位...
总的来说,这个Java的Socket实现的多人聊天程序是一个很好的学习示例,涵盖了网络编程、多线程、并发控制以及用户界面设计等多个方面的知识。通过分析和研究这个项目,开发者可以深入理解Java的Socket通信机制,为...
Java实现聊天室系统,socket编程,消息发送+文件传送,可实现指定用户发送信息,可实现指定用户发送文件
1. 创建一个用于发送和接收的MulticastSocket组播套接字对象 2. 创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象 3. 使用组播套接字joinGroup(),将其加入到一个组播 4. 使用组播套接字的send...
在Java编程语言中,网络通信是一个重要的组成部分,...在学习和理解这个源码实例时,重点应该放在多播套接字的创建、数据的发送和接收,以及多播组的加入和离开过程上。这将有助于深入理解和应用Java的网络编程能力。
此外,为了确保网络资源的有效管理,记得在完成操作后关闭套接字: ```java socket.close(); receiveSocket.close(); ``` 这个实例展示了如何使用Java进行组播通信的基本步骤。通过结合发送和接收代码,你可以创建...
两种基于Java SE的应用程序,以及一种基于Android的应用程序,可以使用多播套接字发送和接收数据包。 它是如何工作的: 您始终必须首先启动一个接收器(Android或SocketMultiCastReceiver)。 之后,尝试运行发送...
在Java代码中,我们使用`DatagramSocket`类来创建一个多播套接字,并设置其为多播模式。为了加入多播组,我们需要获取到多播地址并调用`joinGroup()`方法: ```java InetAddress multicastAddress = InetAddress....
要创建一个组播套接字,可以这样操作: ```java MulticastSocket socket = new MulticastSocket(port); ``` 接着,加入组播组,组播地址通常在IPv4的224.0.0.0到239.255.255.255之间: ```java InetAddress group...
在Java中,套接字分为两种类型:TCP套接字和UDP套接字。TCP套接字基于TCP协议,适用于可靠的连接,因为它提供了数据传输的顺序保证和流量控制。UDP套接字基于UDP协议,适用于不需要保证传输顺序和完整性的场景,如...
3. 使用指定的端口(一般选1024以上的端口号)建立多播套接字 4. 加入多播组 5. 创建一个数据报封装多播信息 6. 发送 接收多播信息的步骤: 1. 开辟接收缓冲区 2. 创建接收数据报 3. 接收 (四)与已知IP和端口的...
9. **高级主题**:可能涵盖SSL/TLS安全套接字、UDP套接字(DatagramSocket)和多播(MulticastSocket)等进阶话题。 10. **最佳实践**:提供编写高效、可维护的网络代码的建议,包括设计模式和编码规范。 通过阅读...
在Java中,套接字分为两种类型:基于TCP的Socket和基于UDP的DatagramSocket。TCP套接字提供了面向连接、可靠的数据传输服务,而UDP套接字则提供了无连接的数据报服务。 第1章主要介绍了计算机网络的基础知识,包括...
例如,Java的`java.net.MulticastSocket`类提供了创建多播套接字的方法,可以用来发送和接收多播数据。 在实现一个多播聊天应用的过程中,以下几个步骤通常是必要的: 1. **创建多播套接字**:创建一个`...
UDP套接字允许数据包的快速发送,但不保证它们的顺序或完整性,因此开发者需要在代码中处理这些潜在问题。例如,他们可能需要实现重传机制来处理丢失的数据包,或者采用时间戳来排序接收到的数据。 至于子文件...