Claro, no me gusta mucho java, pero hace las cosas muy faciles.
Mira no es tan complicado pero debes saber manejar puertos, protocolos e hilos.
Necesitas abrir puertos por protocolos (super recomendado tcp por su comprobacion de errores) una para enviar paquetes y otro para recibirlos.
Hay que crear dos demonios (servidores) que se ejecuten permanentemente uno que escuche la red (los mensajes entrantes) y otro que esuche tu evento de envio (tus mensajes salientes).
Los hilos son para que cada demonio se este ejecutando al mismo tiempo por su cuenta.
Mmm.. creo que es todo para un chat sencillo. Suerte.