Hola:
accept() debe devolver un socket con el cliente que se ha conectado. Si dices que no devuelve nada, hay un problema con la conexión.
No estás usando readLine() por ningún sitio, solo write() y read(), por lo que no debería haber problemas de retornos de carro. El problema es el que te comentaba
Código java:
Ver originalwhile ((numBytes=in.read(buffer)) != -1) {
}
Ese bucle está ejecutándose hasta que ocurre un error en el socket (el -1), por lo que mientras no cierres la conexión o la rompas de alguna forma, estás leyendo (o esperando leer) y copiando en el datagram. Pero si no se cierra la conexión, en ningún momento se detecta cuándo está completo el mensaje ni se hace nada con él.
Se bueno.