服务器端
public class UDPServer02 {
public static void main(String [] args){
try {
//1、创建服务器端,指定端口号
DatagramSocket socket = new DatagramSocket(8800);
System.out.println("***我是服务器端,等待客户端的请求***");
//2、创建一个数据报,用来接收客户端发送的数据
byte[] data = new byte[1024];
int count = 0;
//对接收的数据报进行循环监听,再循环读取
//通过分析可知道读取需要传入的参数有数据类型、数据报、服务器端
while (true){
DatagramPacket packet = new DatagramPacket(data,data.length);
socket.receive(packet);
UDPServerThread udpServerThread = new UDPServerThread(data,packet,socket);
//启动子线程
udpServerThread.start();
count++;
System.out.println("目前一共有:"+count+"个客户端进行访问");
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
子线程
public class UDPServerThread extends Thread {
byte[] data;
DatagramPacket packet;
DatagramSocket socket;
public UDPServerThread(byte[] data, DatagramPacket packet, DatagramSocket socket) {
this.data = data;
this.packet = packet;
this.socket = socket;
}
@Override
public void run() {
//单个接收客户端的数据
String info = new String(data,0,packet.getLength());
System.out.println("我是服务器端,客户端说"+info);
//向客户端发送数据
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data2 = "欢迎您!".getBytes();
//创建数据报,包含响应的数据信息
DatagramPacket packet1 = new DatagramPacket(data2,data2.length,address,port);
try {
socket.send(packet1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端
public class UDPClient {
public static void main(String [] args){
try {
//1、定义服务器端的地址、端口号、数据
InetAddress address = InetAddress.getByName("localhost");
int port = 8800;
byte[] data = "用户名:**www*;密码:12343335".getBytes();//将字符型常量转换成字节型数组
//2、创建要发送的数据报
DatagramPacket packet = new DatagramPacket(data,data.length,address,port);
//3、向服务器发送数据
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
//接收服务器的数据
byte[] data1 = new byte[1024];
DatagramPacket packet1 = new DatagramPacket(data1,data1.length);
socket.receive(packet1);
//将获取到的数据转换成string类型
String reply = new String(data1,0,packet1.getLength());
System.out.println("我是客户端,服务器端说:"+reply);
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果
如果对您有帮助,麻烦您点个赞哦~谢谢。