Ok.
Questo però non mi aiuta a risolvere il mio problema.

Ti spiego meglio cosa faccio :

1)Ho una classe client che deve inviare due richieste all'host (classe presente sullo stesso computer)

2)In una richiesta chiedo la chiave pubblica all'indirizzo del server (localHost).

3)Nell'altra invio un messaggio del tipo "ip@messaggio" ; ip è l'indirizzo a cui l'host deve inviare il messaggio ricevuto (sempre localHost)

4) il server nell'inviare il messaggio utilizza un protocollo UDP ossia un DatagramSocket che spedisce un DatagramPacket che ha come parametro ancora l'indirizzo localHost.

Faccio partire L'host è ok.
Faccio partire il Client e mi da Address already in use: Cannot bind

Lo so che l'indirizzo è già in uso , ma come faccio per far funzionare le due classi sul mio stesso pc?
cioè per testare le mie due classi in locale?

hostAddress e clientAddress non dovrebbero essere sempre gli stessi :

InetAddress ClientHostAddress = InetAddress.getLocalHost();