Chat Simples usando Socket UDP

Pessoal uam duvida aqui, tenho o codigo cliente servidor usando udp, preciso fazer a conexao dos dois, esse codigo ja funciona porem quando o cliente envia a mensagem ele finaliza a conexao ou seja ele so manda uma mensagem, gostaria de saber se alguem sabe como faco para continuar a conexao sem encerrar a nao ser que queira fechar a conexao.

`public void Servidor() {
    try {
        
        DatagramSocket serverSocket = new DatagramSocket(5000);
        byte[] receiveData = new byte[1024];
        while (true) {
            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
            serverSocket.receive(receivePacket);
            String sentence = new String(receivePacket.getData());
            InetAddress IPAddress = receivePacket.getAddress();
            int port = receivePacket.getPort();
            System.out.println("Mensagem recebida: " + sentence);
        }

    } catch (Exception e) {

    }
}

public void Cliente() {
    try {
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        DatagramSocket clientSocket = new DatagramSocket();
        InetAddress IPAddress = InetAddress.getByName("localhost");
        byte[] sendData = new byte[1024];
        byte[] receiveData = new byte[1024];
        String sentence = inFromUser.readLine();
        sendData = sentence.getBytes();
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 5000);
        clientSocket.send(sendPacket);
       // clientSocket.close();
         
       

    } catch (Exception e) {

    }

}`

Essa é a característica do UDP, é um protocolo stateless. Se você quer manter o estado da conexão tem que usar TCP.

nao tenho com manter esse cenario usando udp? ou seja ao enviar o cliente se comporta como servidor ou vice e versa?
@rmendes08

Basicamente você teria que implementar as funcionalidades do TCP na mão … ou seja, você teria que trocar identificadores de sessão, ACKs, etc. Mas por curiosidade, porque fazer com UDP ?

Rapaz é um desafio da faculdade o professor quer assim e disse que tem como fazer.

Bom, eu acho que nesse caso você precisaria estudar o TCP e replicar o mecanismo de sessão. Por exemplo, ao solicitar a conexão com o servidor, o servidor gera um id de sessão, guarda essas informações em um Map global e envia esse id de volta para o cliente. Daí em cada transmissão subsequente o cliente envia esse id de volta.

beleza irmao, vou tentar rever esses conceitos