C++ Network Programming, Volume I: Mastering Complexity with ACE and Patterns