Ajuda com codigo para UDPServer UDPClient

Criar um servidor java e um cliente java baseados nos códigos do livro de Coulouris (e no códigos alterados no laboratório), em que o cliente deverá fazer, no mínimo, 5 sondagens junto ao servidor, obter um RTT médio das 5 sondagens e “ajustar a hora da máquina”(1) baseando-se na hora do servidor e descontado o atraso médio de resposta.
(1) O ajuste da hora da máquina pode ser virtual, com o cliente apenas imprimindo na tela a suposta hora de ajuste.

Esses são os codigos que tenho
Tanto do UDPServer e o UDPClient

import java. net.;
import java. io.
;
import java.time.*;
public class UDPServer{
public static void main(String args[]){
DatagramSocket aSocket = null;
try{
aSocket = new DatagramSocket(6789);
// create socket at agreed port
byte[] buffer = new byte[1000];
while(true){
DatagramPacket request = new DatagramPacket(buffer, buffer.length);
aSocket.receive(request);
LocalTime timePoint = LocalTime.now();
System.out.println(timePoint.toString());
System.out.println("Mensagem Recebida: " + new String(buffer, 0, request.getLength()));
// DatagramPacket reply = new DatagramPacket(request.getData(), request.getLength(),
// request.getAddress(), request.getPort());
DatagramPacket reply = new DatagramPacket(timePoint.toString().getBytes(), timePoint.toString().length(),
request.getAddress(), request.getPort());
aSocket.send(reply);
}
}catch (SocketException e){System.out.println("Socket: " + e.getMessage());
}catch (IOException e) {System.out.println("IO: " + e.getMessage());
}finally {if(aSocket != null) aSocket.close();}
}
}

import java.net.;
import java.io.
;
public class UDPClient{
public static void main(String args[]){
// args give message contents and destination hostname
DatagramSocket aSocket = null;
try {
aSocket = new DatagramSocket();
byte [] m = args[0].getBytes();
InetAddress aHost = InetAddress.getByName(args[1]);
int serverPort = 6789;
int x = 6;
while (x<6){
DatagramPacket request =
while( new DatagramPacket(m, args[0].length(), aHost, serverPort);
aSocket.send(request); }
x++;
byte[] buffer = new byte[1000];
DatagramPacket reply = new DatagramPacket(buffer, buffer.length);
aSocket.receive(reply);
System.out.println("Reply: " + new String(reply.getData()));
}catch (SocketException e){System.out.println("Socket: " + e.getMessage());
}catch (IOException e){System.out.println("IO: " + e.getMessage());
}finally {if(aSocket != null) aSocket.close();}
}
}