案例介绍
实现类似一个广播,先启动客户端,当服务端启动的时候,往所有连接的客户端推送消息。
核心代码
- 服务端
package udpDemo;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;
public class UdpServerDemo {
public static void main(String[] args) {
try {
String info = "好好学习,天天 up up";
byte[] bytes = info.getBytes(StandardCharsets.UTF_8);
DatagramPacket datagramPacket = new DatagramPacket(bytes,
0,
bytes.length,
// 目标地址
InetAddress.getByName("127.0.0.1"),
8888);
//本程序的目标端口
DatagramSocket socket = new DatagramSocket(9000);
socket.send(datagramPacket);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 客户端
package udpDemo;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpClientDemo {
public static void main(String[] args) {
try {
byte[] bytes = new byte[1024];
// 接收端
DatagramPacket data = new DatagramPacket(bytes, bytes.length);
DatagramSocket socket = new DatagramSocket(8888);
System.out.println("正在接收数据中");
//接收数据(会造成阻塞)
socket.receive(data);
String dataStr = new String(data.getData(), 0, data.getLength());
System.out.println(dataStr);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}