while(true) {
// ......
DatagramSocket socket = new DatagramSocket(8000);
}
Dato che nel ciclo (potenzialmente "infinito" essendoci true) NON c'è il close() del socket, ad ogni ciclo cerchi di creare un DatagramSocket bindato sulla porta locale 8000. Ovviamente lo puoi fare una volta sola. Dal secondo ciclo in poi ...... bam.