用JAVA编写一个广播数据报程序。具体的,自定义一个组播地址及端口号,广播端每隔5秒发送当前的时间;定义一个接收端接收广播端发送的数据,并将收到的数据显示在命令行窗口中
时间: 2024-03-02 22:49:48 浏览: 78
好的,我来为您解答。需要使用 Java 的 MulticastSocket 类实现广播数据报程序。
广播端代码:
```java
import java.net.*;
import java.io.*;
import java.util.*;
public class MulticastSender {
public static void main(String[] args) throws Exception {
// 自定义组播地址和端口号
InetAddress group = InetAddress.getByName("224.1.1.1");
int port = 10000;
// 创建 MulticastSocket
MulticastSocket socket = new MulticastSocket(port);
// 加入组播组
socket.joinGroup(group);
// 发送数据
while (true) {
String message = new Date().toString();
byte[] buffer = message.getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, group, port);
socket.send(packet);
Thread.sleep(5000);
}
// 关闭 MulticastSocket
socket.leaveGroup(group);
socket.close();
}
}
```
接收端代码:
```java
import java.net.*;
import java.io.*;
public class MulticastReceiver {
public static void main(String[] args) throws Exception {
// 自定义组播地址和端口号
InetAddress group = InetAddress.getByName("224.1.1.1");
int port = 10000;
// 创建 MulticastSocket
MulticastSocket socket = new MulticastSocket(port);
// 加入组播组
socket.joinGroup(group);
// 接收数据
byte[] buffer = new byte[1024];
while (true) {
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println("Received: " + message);
}
// 关闭 MulticastSocket
socket.leaveGroup(group);
socket.close();
}
}
```
在运行广播端程序和接收端程序之后,您可以在接收端的命令行窗口中看到每隔 5 秒钟收到一次当前时间的广播数据报。
阅读全文