Advanced network programming - principles and techniques : Network Application Programming with Java.