用Java编写一个广播数据报程序。具体的,自定义一个组播地址及端口号,广播端每隔5秒发送当前的时间;定义一个接收端接收广播端发送的数据,并将收到的数据显示在命令行窗口中。
时间: 2024-02-28 16:52:04 浏览: 29
好的,这是一个基于Java的广播数据报程序,实现了自定义组播地址及端口号、广播时间和接收端的功能,具体代码如下:
广播端:
```java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BroadcastSender {
private static final String MULTICAST_GROUP_ADDRESS = "239.0.0.1"; // 自定义组播地址
private static final int PORT = 9999; // 自定义端口号
private static final int INTERVAL = 5000; // 广播时间间隔(毫秒)
public static void main(String[] args) {
try {
InetAddress group = InetAddress.getByName(MULTICAST_GROUP_ADDRESS);
MulticastSocket socket = new MulticastSocket(PORT);
socket.joinGroup(group);
System.out.println("Broadcast sender started.");
while (true) {
String message = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), group, PORT);
socket.send(packet);
System.out.println("Sent message: " + message);
Thread.sleep(INTERVAL);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
接收端:
```java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class BroadcastReceiver {
private static final String MULTICAST_GROUP_ADDRESS = "239.0.0.1"; // 自定义组播地址
private static final int PORT = 9999; // 自定义端口号
public static void main(String[] args) {
try {
InetAddress group = InetAddress.getByName(MULTICAST_GROUP_ADDRESS);
MulticastSocket socket = new MulticastSocket(PORT);
socket.joinGroup(group);
System.out.println("Broadcast receiver started.");
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: " + message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个程序中,广播端通过`MulticastSocket`类向指定的组播地址和端口号发送数据报,接收端同样使用`MulticastSocket`类加入到指定的组播地址和端口号中,并通过循环不断接收数据报并显示在命令行窗口中。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)