编辑一个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组播代码,包括接受组播消息,发送组播消息,代码很清晰
实现组内聊天的功能,通过udp协议实现 首先输入控制命令-c 若输入-c 1代表加入组1 -c exit退出组 -c nodes代表组内成员显示 其他文本输入为聊天内容
java优化编程 java优化编程 java优化编程 java优化编程 java优化编程 java优化编程 java优化编程 java优化编程 java优化编程 java优化编程
这个使用java开发的组播聊天室,可是同时在多台电脑上聊天。使用的是多线程机制,实现了并行
java 实现 udp 组播,包括客户端、服务端
Java完美编程Java完美编程Java完美编程Java完美编程 Java完美编程Java完美编程Java完美编程Java完美编程
Java 套接字编程Java 套接字编程Java 套接字编程Java 套接字编程Java 套接字编程Java 套接字编程
java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程
其最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机执行Java程序的原理、在实际项目中的运用、设计模式和性能优化技巧。同时,本书还贯穿了Sun公司的SCJP(Sun Cer......
Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2编程起步Java2...
java数据库应用程序编程指南
游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java游戏编程java
java并发编程pdf文档第二部分:Java并发编程实战.pdf、Java多线程编程核心技术.pdf、实战Java高并发程序设计.pdf
用Java实现对组通信的实现。设计系统,用Java实现组通信,并显示出来。
java编程术语java编程术语java编程术语java编程术语java编程术语java编程术语
java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...
基于Java网络编程中组播技术的应用研究
基于Java网络编程中组播技术的应用研究.pdf
Java编程规范Java编程规范Java编程规范
java编程规范 java编程规范java编程规范 java编程规范java编程规范 java编程规范java编程规范 java编程规范java编程规范 java编程规范java编程规范 java编程规范