编辑一个java组播应用程序的过程如下
1. 创建一个用于发送和接收的MulticastSocket组播套接字对象
2. 创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象
3. 使用组播套接字joinGroup(),将其加入到一个组播
4. 使用组播套接字的send()方法,将组播数据包对象放入其中,发送组播数据包.
或者
使用组播套接字的receive()方法,将组播数据包对象放入其中,接收组播数据包
5. 解码组播数据包提取信息,并依据得到的信息作出响应String s = new String(dp.getData(), 0, dp.getLength());
6. 重复过程4和5,即在while循环中实现。
7. 使用组播套接字的leaveGroup()方法,离开组播组;关闭组播套接字
接收组播数据包程序:
public class MulticastReceived {
public static void main(String[] args) throws Exception {
InetAddress group = InetAddress.getByName("224.0.0.4"); // 组播地址
int port = 4006; // 端口
MulticastSocket msr = null;
try {
msr = new MulticastSocket(port); // 1.创建一个用于发送和接收的MulticastSocket组播套接字对象
msr.joinGroup(group); // 3.使用组播套接字joinGroup(),将其加入到一个组播
byte[] buffer = new byte[8192];
System.out.println("接收数据包启动!(启动时间:)" + new java.util.Date() + ")");
while (true) {
DatagramPacket dp = new DatagramPacket(buffer, buffer.length); // 2.创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象
msr.receive(dp); // 4.使用组播套接字的receive()方法,将组播数据包对象放入其中,接收组播数据包
String s = new String(dp.getData(), 0, dp.getLength()); // 5.解码组播数据包提取信息,并依据得到的信息作出响应
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (msr != null) {
try {
msr.leaveGroup(group); // 7.使用组播套接字的leaveGroup()方法,离开组播组
msr.close(); // 关闭组播套接字
} catch (IOException e) {
}
}
}
}
}
发送组播包代码:
public class MulticastSender {
public static void main(String[] args) throws Exception {
InetAddress group = InetAddress.getByName("224.0.0.1"); // 组播地址
int port = 4000; // 端口
MulticastSocket mss = null;
try {
mss = new MulticastSocket(port); // 1.创建一个用于发送和接收的MulticastSocket组播套接字对象
mss.joinGroup(group); // 3.使用组播套接字joinGroup(),将其加入到一个组播
byte[] buffer = new byte[8192];
System.out.println("接收数据包启动!(启动时间:)" + new java.util.Date() + ")");
while (true) {
String message = "Hello" + new java.util.Date();
byte[] buffer2 = message.getBytes(); // 2.创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象
DatagramPacket dp = new DatagramPacket(buffer, buffer.length, group, port);
// msr.receive(dp); //接收组播数据包
mss.send(dp); // 4.使用组播套接字的send()方法,将组播数据包对象放入其中,发送组播数据包
// String s = new String(dp.getData(), 0, dp.getLength()); //5.解码组播数据包提取信息,并依据得到的信息作出响应
System.out.println("发送数据包给" + group + ":" + port);
Thread.sleep(1000);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (mss != null) {
try {
mss.leaveGroup(group); // 7.使用组播套接字的leaveGroup()方法,离开组播组
mss.close(); // 关闭组播套接字
} catch (IOException e) {
}
}
}
}
}
注意:
1、IPV4的组播地址为:224.0.0.0-239.255.255.255
2、加入组播组:joinGroup方法
3、MulticastSocket是组播类
4、离开组播组:leaveGroup
5、设置每个组播报文的生存时间:
setTimeToLive(int);
参数为报文在网络上转发的网络链路计数。
1) 0-如果组播限制在同一主机上的进程
2) 1-组播限制在同一子网上的进程
3) 32-组播限制在同个站点上的进程
4) 64-组播限制在同一区域内的进程
5) 128-组播限制在同一大陆上的进程
6) 255-无限制
分享到:
相关推荐
在Java中,要使用组播技术,需要创建一个MulticastSocket对象,并加入到一个组播组中。然后,可以使用DatagramPacket对象来发送和接收数据。组播Socket网络编程可以分为四个步骤:创建MulticastSocket对象,加入组播...
在Java中,多播通过`java.net.MulticastSocket`类来实现,该类提供了加入和离开多播组、发送和接收多播数据包的功能。 在这个项目中,开发者利用了Java的多线程机制,确保了聊天室的高效运行。多线程使得程序可以...
Java中,我们可以利用`java.net.MulticastSocket`类来实现组播功能。首先,创建一个MulticastSocket实例,然后加入到指定的组播组,这样就能接收到该组播组内的消息。 在聊天室的实现中,服务器端通常需要监听特定...
本实例将深入讲解如何在Java中创建组播组并进行数据的发送与接收。 首先,让我们了解什么是IP多播。IP多播是一种网络通信方式,它允许一个源主机向一组特定的接收主机发送数据包。这种方式特别适用于视频流、在线...
这个“Java 组播组中发送和接受数据实例.7z”压缩包很可能是包含了一个或多个Java程序,用于演示如何在Java中实现多播通信。 多播通信的核心在于Internet多播地址和多播组的概念。Internet多播地址属于D类IP地址...
通过实际操作,开发者可以深入理解如何在Java中实现组播通信,包括设置组播组、创建和配置MulticastSocket、以及处理数据包的发送和接收。同时,这也是一个很好的示例,展示了如何在NetBeans这样的IDE中组织和管理...
这个"基于Java的组播组中发送和接受数据实例.zip"的代码可能包含了以上所述的步骤,通过运行和分析代码,你可以更深入地理解Java中组播通信的工作原理和实现方式。对于学习和开发涉及组播的Java应用程序来说,这是一...
首先,我们要理解Java中的网络编程基础。在Java中,Socket编程是网络通信的核心,它提供了客户端和服务器端之间的连接,使得数据能够在两台计算机之间交换。在这个聊天室中,可能使用了ServerSocket来创建服务器端,...
在Java中,实现组播功能主要依赖于Java的Socket API,特别是`java.net.MulticastSocket`类。下面将详细解释Java组播的基本概念、工作原理以及如何通过提供的源码实现组播发送与接收。 首先,理解组播的概念。与单播...
Java网络编程是Java开发中的重要领域,它涵盖了网络应用程序的设计、实现和调试。在这个主题下,我们可以探讨多个关键知识点: 1. **Java Socket编程**:Java的Socket类提供了基于TCP/IP协议的网络通信能力。通过...
4. ServerSocket类:ServerSocket类是Java中的另一个重要类,用于实现服务器端的网络通信。Java程序员可以使用ServerSocket类来创建ServerSocket对象,并使用该对象来实现服务器端的网络通信。 5. Java网络编程模型...
其最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机执行Java程序的原理、在实际项目中的运用、设计模式和性能优化技巧。同时,本书还贯穿了Sun公司的SCJP(Sun Cer......
书中详细讨论了Java中的线程管理,包括如何创建和启动线程,以及如何控制线程的生命周期。读者将学习到`Thread`类和`Runnable`接口的基本用法,以及如何通过实现`Callable`接口创建带返回值的线程。 锁是Java并发...
1. **Java网络编程基础**:首先,书中会介绍Java中的Socket编程,包括TCP和UDP协议的基础知识,以及如何使用Java的Socket和ServerSocket类创建客户端和服务器端的连接。 2. **I/O与NIO**:Java的I/O流系统是网络...
以下是基于标题“华为JAVA编程规范、编程军规”以及描述中提及的文档,提炼出的一些核心知识点: 1. **命名规范**:Java编程中的命名规则非常重要,华为编程规范强调了类名、方法名、变量名应清晰易懂,遵循驼峰...
Java UDP(用户数据报协议)是Java网络编程中不可或缺的一部分,尤其在实现P2P(对等网络)软件时,其高效、无...这个实例为你提供了一个实践的起点,通过学习和运行这个代码,你可以更好地掌握Java中的UDP组播编程。
在《JAVA并发编程实践》中,这 些便利工具的创造者不仅解释了它们究竟如何工作、如何使用,还阐释了创造它们的原因,及其背后的设计模式。JAVA并发编程实践英文版很不错,运用了n多知识。 本书作者都是Java ...
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
在Java中,我们通常使用`java.net.DatagramSocket`类来创建UDP套接字,以及`java.net.DatagramPacket`类来封装和解析数据报。以下是一些关于Java UDP套接字网络编程的关键知识点: 1. **DatagramSocket创建与绑定**...