Как сервер может отправлять клиенту с помощью собственного порта? Вы отправляете ACK с сервера на клиентский порт сервера, вы должны получить UDP-порт клиента из полученного пакета и отправить данные на этот порт.
EDIT
Изменить сервер в методе SendACK на :
ackPacket = new DatagramPacket(ackArray, ackArray.length, InetAddress.getByName("localhost"), incomingPacket.getPort());
И теперь проанализируйте код, запустив.