import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpReceiver extends Thread {
//接收客户端消息的线程
    private DatagramSocket datagramSocket;
    private int port;
    public UdpReceiver(DatagramSocket datagramSocket,int  port){
        this.datagramSocket = datagramSocket;
        this.port = port;
    }
    @Override
    public void run() {
        this.udpReceive();
    }
    //实现接收信息
    public void udpReceive(){
        //创建服务端接收数据的DatagramSocket 对象
        try {
            datagramSocket = new DatagramSocket(this.port);
            //创建数据缓存区
            byte [] bytes = new byte[1024];
            //创建数据报包对象
            UdpChatRoom.dp = new DatagramPacket(bytes,bytes.length);
            //等待接收客户端所发送的数据
            try {
                synchronized (UdpChatRoom.dp){
                    datagramSocket.receive(UdpChatRoom.dp);
                    //唤醒线程
                    UdpChatRoom.dp.notifyAll();
                    String str = new String(UdpChatRoom.dp.getData(),0,UdpChatRoom.dp.getLength());
                    System.out.println(str);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}
public class UdpSend extends Thread {
    //向客户端发送消息的线程
    private DatagramPacket datagramPacket;
    private DatagramSocket datagramSocket;
    private String destIp;//目标IP地址
    private int desPort;//目标端口
    private Scanner scanner;
    public UdpSend(DatagramSocket datagramSocket, DatagramPacket datagramPacket, String destIp, int desPort, Scanner scanner) {
        this.datagramSocket = datagramSocket;
        this.datagramPacket = datagramPacket;
        this.destIp = destIp;
        this.desPort = desPort;
        this.scanner = scanner;
    }
    @Override
    public void run() {
        this.sendMsg();
    }
    //向客户端发送消息
    public void sendMsg() {
        while (true) {
            //消息需要进行转换转换成字符数组
            scanner = new Scanner(System.in);
            String sendMsg = scanner.nextLine();
            byte[] bytes = sendMsg.getBytes();
            //创建数据报包装对象DatagramPacket
            this.datagramPacket = new DatagramPacket(bytes, bytes.length, new InetSocketAddress(this.destIp, this.desPort));
            //将数据包放入公共数据区
            UdpChatRoom.dp = datagramPacket;
            //创建数据发送对象DatagramSocket,需要指定消息的发送端口
            try {
                this.datagramSocket = new DatagramSocket(8888);
                synchronized (datagramPacket){
                     //让发送消息的线程处于等待状态
                    datagramPacket.wait();
                    //从公共数据区取出包发送给客户端
                    this.datagramSocket.send(UdpChatRoom.dp);
                }
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (datagramSocket != null) {
                        datagramSocket.close();
                    }
                    if (datagramPacket != null) {
                        datagramSocket.close();
                    }
                    if (scanner != null) {
                        scanner.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.util.Scanner;
public class UdpChatRoom {
    //udp一对多聊天室
    //存放公共的信息
    public static DatagramPacket dp;
    public static void main(String[] args) {
        try {
            DatagramSocket datagramSocket = new DatagramSocket(8888);
            new UdpReceiver(datagramSocket,9999).start();
            new UdpSend(datagramSocket,UdpChatRoom.dp,"127.0.0.1",8888,new Scanner(System.in)).start();
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}老师这是我用udp写的哪个多人聊天,看看哪里有错误